poppylx 发表于 2008-7-4 01:16

关于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消息.

poppylx 发表于 2008-7-4 01:24

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

poppylx 发表于 2008-7-4 22:21

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

页: [1]

编程论坛