有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确没有问题。
请问这是为什么?
解决方案 »
- 关于MFC客户区录制视频的问题
- HookProc 钩子 如何写
- 关于图片去背景显示的效率问题
- 怎样在窗口或dialog上弄个洞出来?就是搞个透明区出来。
- 《windows程序设计》里代码的问题!
- 一个Reader多个Writer共同操作一个数据区,我该如何进行同步?
- 视频监控客户端开发(IP Camera)总结
- 调用MFC的OnPaint函数会使内存迅速增长,调用各种释放方法都没用,如何解决?
- 怎样把多个文件打包成一个文件?
- 在vs2005中的MFC应用程序项目中如何添加头文件(如math.h)?
- 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;
都没问题