消息处理的问题

idleloop 2004-01-14 02:14:29
首先申明:我是MFC新手:)
用MFC框架结构生成一个多文档的TEST工程文件。
当然其中自动生成TESTAPP,TESTDOC,TESTVIEW,CCHILDFRAME ,CMAINFRAME等几个类.我在view中 定义了消息映射
BEGIN_MESSAGE_MAP(CTestView, CView)
ON_WM_CHAR()
END_MESSAGE_MAP()
程序运行后,随意按键盘, 会调用CTESTVIEW:ONCHAR 函数

但如果我不在VIEW定义该消息,
改在CMAINFREME,CCHILDFRAME等其他类中,定义ON_WM_CHAR()消息映射及对应ONCHAR函数,程序运行后,随意按键盘, 并不会调用对应类的的ONCHAR 函数。

当然你可以用PreTranslateMessage来截获WM_CHAR消息,做你想要的处理,
我的问题是:难道在CCHILDFRAME ,CMAINFRAME,TESTAPP中就不能用ON_WM_CHAR(),ON_WM_MOUSEMOVE()等消息映射?


...全文
68 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
idleloop 2004-01-14
  • 打赏
  • 举报
回复
TO: QunKangLi(雪霁)
Sharpblade(VC小菜鳥 & C#小小菜鳥)
是有优先,但我并没有处理VIEW中的WM_CHAR,为什么其他类不能处理呢

哎,好象都解释的不是很清楚啊


BinaryTreeEx 2004-01-14
  • 打赏
  • 举报
回复
鼠标的移动事件在客户区才对应ON_WM_MOUSEMOVE(),在非客户区对应的不是ON_WM_MOUSEMOVE()。而是WM_NCMOUSEMOVE,其他消息类似。
CounterHack 2004-01-14
  • 打赏
  • 举报
回复
顶端窗口优先处理!
sharpblade 2004-01-14
  • 打赏
  • 举报
回复
我想有優先順序的吧
視圖->文檔->MDI子框架->MDI主框架->應用程序
QunKangLi 2004-01-14
  • 打赏
  • 举报
回复
消息会优先发给当前激活的视图类处理,其次文档类,以前类都不处理时才交由框架类。
你在视图类或文档类处理后,框架类就收不到消息了
idleloop 2004-01-14
  • 打赏
  • 举报
回复
TO: vollin()
我试过,关闭VIEW后,情况是一样的
vollin 2004-01-14
  • 打赏
  • 举报
回复
这个和焦点有关系,系统把消息发往的窗口是当前活动的窗口.不信的话,你可以先关闭View然后再按键盘看看会进入哪里?
windyloft 2004-01-14
  • 打赏
  • 举报
回复
gz

16,551

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC相关问题讨论
社区管理员
  • 基础类社区
  • Creator Browser
  • encoderlee
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

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

试试用AI创作助手写篇文章吧