有2个对话框类CADlg,CBDlg
在CADlg中定义一成员,此成员类型是CBDlg
class CADlg
{
...
protected:
CBDlg m_dlgB;}然后在A的InitDialog中
m_dlgB.create(IDD_DIALOG_B, this)//IDD_DIALOG_B是CBDlg的模板名这样在A对话框中生成一个B现在我在B中的某个事件中(比如LBUTTONDOWN)添加如下函数
((CADlg*)m_pParentWnd)->PostMessage(TTM_MYMSG, 0, 0);//TTM_MYMSG是自定义消息
向父窗口发送一个自定义消息编译无问题,运行时候点B激发LBUTTONDOWN出现访问错误,我试图通过
((CADlg*)m_pParentWnd)->SendMessage(TTM_MYMSG, 0, 0);或者
::PostMessage(((CADlg*)m_pParentWnd)->GetSaftWnd(), TTM_MYMSG, 0, 0);
来发送消息都出问题。但是我通过((CADlg*)m_pParentWnd)->DoSomething()直接调用CADlg的某个成员函数DoSomething确没有问题。
请问这是为什么?
在CADlg中定义一成员,此成员类型是CBDlg
class CADlg
{
...
protected:
CBDlg m_dlgB;}然后在A的InitDialog中
m_dlgB.create(IDD_DIALOG_B, this)//IDD_DIALOG_B是CBDlg的模板名这样在A对话框中生成一个B现在我在B中的某个事件中(比如LBUTTONDOWN)添加如下函数
((CADlg*)m_pParentWnd)->PostMessage(TTM_MYMSG, 0, 0);//TTM_MYMSG是自定义消息
向父窗口发送一个自定义消息编译无问题,运行时候点B激发LBUTTONDOWN出现访问错误,我试图通过
((CADlg*)m_pParentWnd)->SendMessage(TTM_MYMSG, 0, 0);或者
::PostMessage(((CADlg*)m_pParentWnd)->GetSaftWnd(), TTM_MYMSG, 0, 0);
来发送消息都出问题。但是我通过((CADlg*)m_pParentWnd)->DoSomething()直接调用CADlg的某个成员函数DoSomething确没有问题。
请问这是为什么?
解决方案 »
- 对特殊字符怎么处理?既不能直接输出,也不能在界面显示。
- 急救,纯dos6.22下,socket编程
- 弹出新窗口的问题
- 关于“历史文件”?
- win2000里的数据源(odbc)里的数据源驱动程序列表里的项目都是什么意思?
- 各位帅哥靓女,有事求助!
- TIF 图像文件格式。那位有关于这个格式的文挡,或者程序 ,多谢哦
- 请问CPropertySheet的Create成员函数怎么使用?谢谢!!
- vc++ vs java
- 请教“HOOK DLL注入成功,读取数据失败”
- dll为什么不能直接替换
- 100分求programming server-side application for win2000的随书代码
不知道m_pParentWnd是你定义的还是系统的变量看看他的说明
否则通过((CADlg*)m_pParentWnd)-> DoSomething()直接调用CADlg的某个成员函数DoSomething就会有问题,这里我调用成员函数DoSOmething()是没有问题!问题出在POSTMESSAGE和SENDMESSAGE!此外,假如在A中定义的B成员是指针
CBDlg* m_pdlgB;
通过
New然后CREATE
这样产生的来POST,SEND却没有问题很好奇想知道为什么
::SendMessage(((CADlg*)*)GetParent())->m_hWnd,TTM_MYMSG,0,0;
都没问题