单文档,对话框其间的关系
单文档,对话框之间的关系
MFC的消息机制还是有点晕,现在在通过做例子来发现自身缺陷,我是创建了一个单文档,然后又创建了一个对话框,当然两个都是不同的类,我在对话框上排列了一些控件,也进行了初始化和方法,但是在调用的时候就蒙圈了。得在View下显示啊,我弱弱的把所有的方法都写在了视图类的OnDraw下,我现在就是想在对话框上点击确定按钮后,视图能收到我触发的消息,让它在视图上进行一个重画的过程,但是这种发送和接收的过程有点不理解,还请高手指点一二。简单的说,我如何在一个弹出的对话框点击按钮后,视图能进行一个操作,需要我SendMessage?自定义响应消息?
------解决方案--------------------
View和对话框都是CWnd,CWnd可以处理消息循环,SendMessage必须指定目标对象也就是需要处理这个消息的窗口。
所以你可以把View的指针传给对话框,需要向View发送消息时就调用pView->SendMessage,就行了
------解决方案--------------------
对话框是不是你的View创建的呢?如果是的话,可以在对话框中建一个CMyView *m_pView成员,在View中实例化对话框的时候,把View对象的句柄传过去即可。
如果不是,则应该是View和对话框都在更上层的地方创建,那么这个传递工作由上层来做,也是一样的原理。
------解决方案--------------------
在对话框中使用:
MFC SDI :几个 取类 函数:
//
CMainFrame *pMain=(CMainFrame *)theApp.m_pMainWnd;
CXXXView *pView=(CShowFontView *)pMain->GetActiveView( );
CXXXDoc *pDoc=(CShowFontDoc *)pMain->GetActiveDocument( );
//
CMainFrame *pWnd=(CMainFrame*)AfxGetApp()->m_pMainWnd;
------解决方案--------------------
用GetParent()->SendMessage
------解决方案--------------------
pView = AfxGetMainWnd()->GetActiveView()
------解决方案--------------------
并不是有了 CMyView *m_pView定义就行,还要幅值给它才能用。
如果View是对话框的父窗口,当然GetParent()->SendMessage也行。
MFC的消息机制还是有点晕,现在在通过做例子来发现自身缺陷,我是创建了一个单文档,然后又创建了一个对话框,当然两个都是不同的类,我在对话框上排列了一些控件,也进行了初始化和方法,但是在调用的时候就蒙圈了。得在View下显示啊,我弱弱的把所有的方法都写在了视图类的OnDraw下,我现在就是想在对话框上点击确定按钮后,视图能收到我触发的消息,让它在视图上进行一个重画的过程,但是这种发送和接收的过程有点不理解,还请高手指点一二。简单的说,我如何在一个弹出的对话框点击按钮后,视图能进行一个操作,需要我SendMessage?自定义响应消息?
------解决方案--------------------
View和对话框都是CWnd,CWnd可以处理消息循环,SendMessage必须指定目标对象也就是需要处理这个消息的窗口。
所以你可以把View的指针传给对话框,需要向View发送消息时就调用pView->SendMessage,就行了
------解决方案--------------------
对话框是不是你的View创建的呢?如果是的话,可以在对话框中建一个CMyView *m_pView成员,在View中实例化对话框的时候,把View对象的句柄传过去即可。
如果不是,则应该是View和对话框都在更上层的地方创建,那么这个传递工作由上层来做,也是一样的原理。
------解决方案--------------------
在对话框中使用:
MFC SDI :几个 取类 函数:
//
CMainFrame *pMain=(CMainFrame *)theApp.m_pMainWnd;
CXXXView *pView=(CShowFontView *)pMain->GetActiveView( );
CXXXDoc *pDoc=(CShowFontDoc *)pMain->GetActiveDocument( );
//
CMainFrame *pWnd=(CMainFrame*)AfxGetApp()->m_pMainWnd;
------解决方案--------------------
用GetParent()->SendMessage
------解决方案--------------------
pView = AfxGetMainWnd()->GetActiveView()
------解决方案--------------------
并不是有了 CMyView *m_pView定义就行,还要幅值给它才能用。
如果View是对话框的父窗口,当然GetParent()->SendMessage也行。