| 编程中国 | 业界新闻 | 技术文章 | 视频教程 | 下载频道 | 程序源码 | 个人空间 | 编程论坛
全能ASP/PHP/ASP.NET主机,支持月付专业 MSSQL 数据库空间,支持月付专业 MySQL 数据库空间,支持月付学习型 ASP/PHP/ASP.NET 主机 30元/年
高端软件开发 = 年薪十万不是梦   
共有 366 人关注过本帖
标题:关于MFC消息处理的问题
收藏  订阅  推荐  打印
poppylx
Rank: 3Rank: 3
等级:中级会员
帖子:348
积分:3588
注册:2004-9-27
关于MFC消息处理的问题

今天碰到一个问题
对话框中包含一个控件, 实际上是一个抽象.
在用户点击控件时, 对话框对控件进行处理, 即处理NM_Click.

首先是这样做的
class MyDialog : public CDialog
{
    ....
    OnClickTree();   //处理用户点击Tree的事件
    CTreeCtrl *m_Tree;    //一个指针, 指向一个CTreeCtrl的对象
}
OK, 一切行为良好.

后来需求发生变化, 要求在用户点击控件的时候, 控件自己有所处理, 对话框的处理行为不变.
所以将结构改成这样
class MyTree: public CTreeCtrl
{
    ....
    OnClick();    //控件自己对click事件的处理函数
}
MyDialog保持不变.

这时问题出来了, 由于同是对NM_CLICK的处理, 所以MyDialog无法接收到改消息.
请问各位要如何才能让MyDialog接收到nm_click消息.
2008-7-4 01:16
poppylx
Rank: 3Rank: 3
等级:中级会员
帖子:348
积分:3588
注册:2004-9-27

由于考虑到对话框与控件间的依赖性, 所以拒绝了几种做法.
1. 在MyTree::OnClick中send一个自定义消息.
2. MyDialog传递一个函数指针给MyTree, 在MyTree::OnClick中调用该函数指针.
3. 在MyTree::OnClick中完成MyDialog应该做的事情.
请问还有其他方法吗??
即降低两者之间的依赖, 又可以保持控件对外的接口.

动于心而静如水
2008-7-4 01:24
poppylx
Rank: 3Rank: 3
等级:中级会员
帖子:348
积分:3588
注册:2004-9-27

无法解决吗
还是太容易了 大家不屑于回答??

动于心而静如水
2008-7-4 22:21
共有 365 人关注过本帖
关于我们 | 广告合作 | 编程中国 | 清除Cookies | Archiver | WAP | TOP

编程中国 版权所有,并保留所有权利。鲁ICP备08000592号
Powered by Discuz, Processed in 0.045868 second(s), 9 queries.
Copyright©2004-2008, BCCN.NET, All Rights Reserved