导航
  • 主页
  • VC综合技术
  • 互联网技术
  • MFC AppLauncher
  • .NET 技术
  • 界面
  • 进程
  • 算法
  • 硬件/系统
  • 数据库
  • VC++技术资源

在请问一个问题,消息映射的

wateryh 2010-07-02 06:04:41
这样一个情景:
我的对话框里面定义一个 CWnd 之类的变量
在一个函数里面,
调用 create()函数,比如:
m_childWnd.Create(_T("STATIC"), "Hi", WS_CHILD | WS_VISIBLE,
CRect(0, 0, 20, 20), this, 1234);

然后把这个只窗口显示在对话框上。

我的问题是:
怎么给这个子窗口分配事件呢。比如:单击,鼠标之类的

求高手指点啊
...全文
56 点赞 收藏 10
写回复
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
wateryh 2010-07-03
[Quote=引用 9 楼 webcqsec 的回复:]
ON_NOTIFY(BN_CLICKED,1234, OnTest)
[/Quote]
还是不行,不知道哪里出现问题了

检查了一下,以为static不支持点击,我又把它该为按钮
m_childWnd.Create(_T("BUTTON"), "Hi", WS_CHILD | WS_VISIBLE,
CRect(0, 0, 50, 50), this, 1234);
也没效果.
回复
webcq1999 2010-07-03
ON_NOTIFY(BN_CLICKED,1234, OnTest)
回复
wateryh 2010-07-03
[Quote=引用 1 楼 tttyd 的回复:]
1234就是这个控件的ID
命令消息通过这个ID和这个控件关联起来

当然控件内部也可以处理这些消息
[/Quote]
你看我这样做是否正确
1. 声明函数 afx_msg void OnTest();
2. 这样祖册 ON_BN_CLICKED(1234, OnTest)
3. 实现
void CTest0702Dlg::OnTest()
{
MessageBox("this is on test click");
}

好像不管用啊
回复
vnking 2010-07-03
我的问题是:
怎么给这个子窗口分配事件呢。比如:单击,鼠标之类的
==============================================
子窗口自己获得消息的,不用理它。

楼主的问题貌似是:当这个子窗口被点击时,要通知父窗口吧?

这个问题基本是通过WM_NOTIFY通知父窗口的。
回复
webcq1999 2010-07-03
可以使用 WM_NOTIFY 消息来处理子窗口的消息,消息映射用 ON_NOTIFY( wNotifyCode, id, memberFxn )。其中id既是子窗口的id。
回复
向立天 2010-07-03
重载CWnd
自己写他的消息
回复
liuhaifeng1976 2010-07-03
自定义消息函数,
回复
昨夜无风 2010-07-02
你创建了个STATIC控件,像单击、鼠标之类的还是交给父窗口来处理吧!

比如,当鼠标在区域(0, 0, 20, 20)时,父窗口响应鼠标消息!!
回复
fishion 2010-07-02
SetWindowLong,重写这个窗口的消息回调函数,指定处理类型为DWL_DLGPROC,不行就在父窗口的pretranslatemessage捕获消息,用pMsg->hwnd来判断是不是你的指定窗口
回复
雪影 2010-07-02
1234就是这个控件的ID
命令消息通过这个ID和这个控件关联起来

当然控件内部也可以处理这些消息
回复
发动态
发帖子
VC/MFC
创建于2007-09-28

1.5w+

社区成员

VC/MFC相关问题讨论
申请成为版主
社区公告

        VC/MFC社区版块或许是CSDN最“古老”的版块了,记忆之中,与CSDN的年龄几乎差不多。随着时间的推移,MFC技术渐渐的偏离了开发主流,若干年之后的今天,当我们面对着微软的这个经典之笔,内心充满着敬意,那些曾经的记忆,可以说代表着二十年前曾经的辉煌……
        向经典致敬,或许是老一代程序员内心里面难以释怀的感受。互联网大行其道的今天,我们期待着MFC技术能够恢复其曾经的辉煌,或许这个期待会永远成为一种“梦想”,或许一切皆有可能……
        我们希望这个版块可以很好的适配Web时代,期待更好的互联网技术能够使得MFC技术框架得以重现活力,……