首先建立两个子对话框类:CPage1,和CPage2; 在主对话框类CDlgMy中声明三个变量: 
CPage2   m_page2; 
CPage1   m_page1; 
CPropertySheet   m_sheet; 在主对话框类CDlgMy的初始化函数中加入如下代码: 
m_sheet.AddPage(&m_page1); 
m_sheet.AddPage(&m_page2); 
m_sheet.Create(this,   WS_CHILD   |   WS_VISIBLE,   WS_EX_CONTROLPARENT); 主对话框运行的时候,就会显示一个包含两页的属性页。 在对话框类CDlgMy中接收到一个消息,消息内容已经在buf中了
void CDlgMy::getMsg(char * buf)
{//在这里怎么把消息传给CPage1
}
子对话框类CPage1当中添加了一个按钮,响应函数如下: 
void   CPage1::dealWithMsg(char * pbuf)   

//   把收到的消息经过处理后,显示到属性页上   
}  请问,在getMsg函数中怎么把消息传给dealWithMsg?为什么在getMsg函数中m_page1.dealWithMsg(buf);会使程序死掉,该怎么解决?多谢你们了 

解决方案 »

  1.   

    很有可能是buf是在栈中分配的,由于处理不当导致指针不正确,最后非法访问。
      

  2.   

    死有很种方法哇~~
    void  CPage1::dealWithMsg(char * pbuf)  

    // 都没代码哪知道怎么死哇~
    }
      

  3.   

    父窗口给自窗口发送消息用sendmessage就可以
    SendMessage(ChildWnd.GetSafeWnd(), WM_MESSAGEID, wParam, lParam);按你的方式,你已经得到消息内容了,那你直接m_page1.dealWithMsg(buf);应该就可以了,为什么会死掉你就要检查代码了
    void CDlgMy::getMsg(char * buf) 
    {
         ASSERT(buf);
         m_page1.dealWithMsg(buf); 

    或者
    void  CPage1::dealWithMsg(char * pbuf)  

         ASSERT(pbuf); 
          ......  //确定你处理代码时没问题

      

  4.   

    我再把问题说详细一点,希望能得到大家的帮助,多谢你们了首先建立两个属性页类:CPage1,和CPage2; 在主对话框类CDlgMy中声明三个变量: 
    CPage2  m_page2; 
    CPage1  m_page1; 
    CPropertySheet  m_sheet; 在主对话框类CDlgMy的初始化函数中加入如下代码: 
    m_sheet.AddPage(&m_page1); 
    m_sheet.AddPage(&m_page2); 
    m_sheet.Create(this,  WS_CHILD  |  WS_VISIBLE,  WS_EX_CONTROLPARENT); 主对话框运行的时候,就会显示一个包含两页的属性页。 在对话框类CDlgMy中接收到一个消息,消息内容已经在buf中了 
    void CDlgMy::getMsg(char * buf) 
    {//在这里怎么把消息传给CPage1 
     m_page1.dealWithMsg(buf);
    } 属性页类CPage1中的响应函数如下: 
    void  CPage1::dealWithMsg(char * pbuf)  

     CString str;//字符串
     UserMsg_T * pUserMsg;
     pUserMsg = (UserMsg_T *)pbuf;   //把收到的消息传给一个结构体,这个结构体里面有一些变量;其中一个是strName,她也是字符串类型
     str = pUserMst.strName;        //我这里只列出了其中一个变量
     GetDlgItem(IDC_EDIT1).SetWindowText(str);//IDC_EDIT1是对象m_page1页面上的一编辑框控件,我把收到的消息经过处理后,在编辑框上
                                                   显示,调试运行时程序就在这里崩掉了
    } 请问,在getMsg函数中怎么把消息传给dealWithMsg?为什么在getMsg函数中m_page1.dealWithMsg(buf);会使程序崩掉,该怎么解决?多谢你们了