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
展开
 我来答
负家子弟
2010-06-21 · TA获得超过3567个赞
知道大有可为答主
回答量:1336
采纳率:0%
帮助的人:1399万
展开全部
这个问题我是这么个思路:

首先在你的对话框里调用::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一下不就得了。
xiaohuh421
2010-06-21 · TA获得超过903个赞
知道小有建树答主
回答量:897
采纳率:0%
帮助的人:341万
展开全部
你的想法本身就是错的,"想在视图类中添加消息处理程序 OnDialogDestroyed"

视类又不是对话框类,请问何来的 OnDialogDestoryed ?

只能对你想操作的对话框所对应的对话框类才能加这个消息响应函数
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
wjjroy602602
2010-06-21 · TA获得超过137个赞
知道答主
回答量:43
采纳率:0%
帮助的人:43.5万
展开全部
弄一个全局的CMy123123Doc* pDoc1
然后在view类初始化里面pDoc1 = GetDocument();
对话框直接访问pDpc1这个全局变量就行了
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
百度网友ecba46aab
2010-06-21 · TA获得超过2303个赞
知道大有可为答主
回答量:2477
采纳率:100%
帮助的人:1905万
展开全部
OnDialogDestroyed 在对话框中处理啊

如果代码不需要保密的话:请把代码压成*.rar当附件发在 何丹的论坛(/) 上.压代码前,请先删除debug,release文件夹,及*.opt,*.ncb,*.plg,*.aps. 如果不想注册,可用临时号,帐号和密码都是test2
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(2)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式