看了论坛上的很多关于SendMessage的问题,大家跟我的都不一样,所以只好发帖请大家帮忙
我用SendMessage在不同的类之间传送消息:在一个含有Tree控件的类中,如果双击一个项目,则会发送一个消息给View类(pView是App类的一个成员,是View的一个实例)
CTest2App *pApp=(CTest2App *)AfxGetApp();
if (S1 == "信息输入")
{
pApp->pView->SendMessage(WM_DIALOG_SHOW,(LPARAM)_T("被测者信息输入"));
}在view的.h文件里这样写:
#define WM_DIALOG_SHOW  WM_USER+1
在cpp文件里:
ON_MESSAGE(WM_DIALOG_SHOW, TesterInfo)void CTest2View::TesterInfo(WPARAM  wParam,LPARAM  lParam)
{
CTesterInfo dlg;
int ren = dlg.DoModal();
if (IDOK == ren)
{
           ......
}
else
{
   return;
}
}第一次双击那一个项目的时候,响应是正常的,当点击对话框中的“确定”或“取消”按钮将对话框关闭以后,再次双击该树形控件的同一项目时候,就会出现一个错误,强制程序退出,不知道是什么问题,请大家帮帮忙,谢谢

解决方案 »

  1.   

    不好意思上面的代码有点错误,那个响应函数写错了,我写得是没有带参数的
    void CTest2View::TesterInfo()
    定义的时候也没带参数,不知道这样是不是不行,可是第一次运行是正确的还有,我跟踪运行了一下,发现第一次运行后,在此点击相同的树形控件项目,感慨是运行是正确的,但是只要运行到发送消息那里就是错误的要说程序中用到了指针,那也就是在发送消息的那句涉及到了指针
      

  2.   

    LRESULT TesterInfo(WPARAM  wParam,LPARAM  lParam); //自定义消息的返回值是 LRESULT。
      

  3.   

    楼上的兄弟,我按照您说的,修改了TesterInfo的返回类型为LRESULT,但是还是出现同样的问题,还有哪里可能出现问题呢?
      

  4.   

    IsWindow(pApp->pView->m_hWnd); //查看一下窗口的句柄是否有效。//消息中的 lParam 字符串不能更改。