MFC中对话框如何访问文档成员变量?
另想在视图类中添加消息处理程序OnDialogDestroyed,但为何找不到这个消息?SDI界面,对话框为无模式的。只要解决这个问题即可给分:MFC中对话框如何访问文档...
另想在视图类中添加消息处理程序 OnDialogDestroyed,但为何找不到这个消息?
SDI界面,对话框为无模式的。
只要解决这个问题即可给分:MFC中对话框如何访问文档成员变量
OnDialogDestroyed的问题,我是在看jeff prosise 的MFC windows 程序设计那本书,遇到的问题。
再看了遍书中代码,是这样的
ON_MESSAGE(WM_USER_DIALOG_DESTROYED),OnDialogDestroyed);
在mainframe 和 view中都有这个处理过程 对应光盘不见了,我也不知道WM_USER_DIALOG_DESTROYED的值是多少
这个问题基本明白,看下面的
http://bbs.chinaunix.net/thread-904224-1-1.html 展开
SDI界面,对话框为无模式的。
只要解决这个问题即可给分:MFC中对话框如何访问文档成员变量
OnDialogDestroyed的问题,我是在看jeff prosise 的MFC windows 程序设计那本书,遇到的问题。
再看了遍书中代码,是这样的
ON_MESSAGE(WM_USER_DIALOG_DESTROYED),OnDialogDestroyed);
在mainframe 和 view中都有这个处理过程 对应光盘不见了,我也不知道WM_USER_DIALOG_DESTROYED的值是多少
这个问题基本明白,看下面的
http://bbs.chinaunix.net/thread-904224-1-1.html 展开
4个回答
展开全部
这个问题我是这么个思路:
首先在你的对话框里调用::AfxGetMainWnd()
然后把上一步得到的指针强制类型转换为CFrameWnd*型
最后调用CFrameWnd::GetActiveDocument();
代码如下
CFrameWnd* FrameWnd=(CFrameWnd*)::AfxGetMainWnd();
CDocument* pDoc=FrameWnd->GetActiveDocument();
到这里pDoc就是你要的至于把它变成你的文档类型那就是举手之劳了。这个方法对SDI架构有效对MDI没用。因为MDI里用AfxGetMainWnd得到的是CMDIFrameWnd.
另一个问题,从ON_MESSAGE(WM_USER_DIALOG_DESTROYED),OnDialogDestroyed);
这个可以看到很多信息,
首先WM_USER_DIALOG_DESTROYED这个消息的前缀WM_USER_很明确的指出这是个用户自定义消息。所以它的定义就在那个出现这个常量的CPP文件最开头链接的那些.h文件里面。去找吧。
其次ON_MESSAGE这个宏,最基本的用法就是把用户自定义消息和消息响映函数关联起来。
最后,如果你经验丰富的话可以一眼看出来,在CDialog类里只有WM_DESTROY消息和它的响应函数OnDestroy。跟摧毁有关的还有一个就是DestroyWindow。根本就没有名叫OnDialogDestroyed的函数。
所以OnDialogDestroyed这一定是一个自定义消息的响应函数
所以它的值是多少一点也不重要,重要的是它在哪里定义。这样你用它的时候才能把它声明了。
你链接的那个页面实在是没明白你想怎样,你都玩到SetupAPI了怎么还在这个问题上打结啊。最后再说一点第三个对话框干吗非得无模态,DoModal一下不就得了。
首先在你的对话框里调用::AfxGetMainWnd()
然后把上一步得到的指针强制类型转换为CFrameWnd*型
最后调用CFrameWnd::GetActiveDocument();
代码如下
CFrameWnd* FrameWnd=(CFrameWnd*)::AfxGetMainWnd();
CDocument* pDoc=FrameWnd->GetActiveDocument();
到这里pDoc就是你要的至于把它变成你的文档类型那就是举手之劳了。这个方法对SDI架构有效对MDI没用。因为MDI里用AfxGetMainWnd得到的是CMDIFrameWnd.
另一个问题,从ON_MESSAGE(WM_USER_DIALOG_DESTROYED),OnDialogDestroyed);
这个可以看到很多信息,
首先WM_USER_DIALOG_DESTROYED这个消息的前缀WM_USER_很明确的指出这是个用户自定义消息。所以它的定义就在那个出现这个常量的CPP文件最开头链接的那些.h文件里面。去找吧。
其次ON_MESSAGE这个宏,最基本的用法就是把用户自定义消息和消息响映函数关联起来。
最后,如果你经验丰富的话可以一眼看出来,在CDialog类里只有WM_DESTROY消息和它的响应函数OnDestroy。跟摧毁有关的还有一个就是DestroyWindow。根本就没有名叫OnDialogDestroyed的函数。
所以OnDialogDestroyed这一定是一个自定义消息的响应函数
所以它的值是多少一点也不重要,重要的是它在哪里定义。这样你用它的时候才能把它声明了。
你链接的那个页面实在是没明白你想怎样,你都玩到SetupAPI了怎么还在这个问题上打结啊。最后再说一点第三个对话框干吗非得无模态,DoModal一下不就得了。
展开全部
你的想法本身就是错的,"想在视图类中添加消息处理程序 OnDialogDestroyed"
视类又不是对话框类,请问何来的 OnDialogDestoryed ?
只能对你想操作的对话框所对应的对话框类才能加这个消息响应函数
视类又不是对话框类,请问何来的 OnDialogDestoryed ?
只能对你想操作的对话框所对应的对话框类才能加这个消息响应函数
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
弄一个全局的CMy123123Doc* pDoc1
然后在view类初始化里面pDoc1 = GetDocument();
对话框直接访问pDpc1这个全局变量就行了
然后在view类初始化里面pDoc1 = GetDocument();
对话框直接访问pDpc1这个全局变量就行了
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
OnDialogDestroyed 在对话框中处理啊
如果代码不需要保密的话:请把代码压成*.rar当附件发在 何丹的论坛(/) 上.压代码前,请先删除debug,release文件夹,及*.opt,*.ncb,*.plg,*.aps. 如果不想注册,可用临时号,帐号和密码都是test2
如果代码不需要保密的话:请把代码压成*.rar当附件发在 何丹的论坛(/) 上.压代码前,请先删除debug,release文件夹,及*.opt,*.ncb,*.plg,*.aps. 如果不想注册,可用临时号,帐号和密码都是test2
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询