社区
界面
帖子详情
按键消息是子窗口还是父窗口先收到?
rokia
2003-06-11 05:07:07
一个对话框中,有一个edit 编辑框 ,
在编辑框中按下一个键时,谁先收到 wm_keydown 消息?
...全文
363
17
打赏
收藏
按键消息是子窗口还是父窗口先收到?
一个对话框中,有一个edit 编辑框 , 在编辑框中按下一个键时,谁先收到 wm_keydown 消息?
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
17 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
rokia
2003-06-14
打赏
举报
回复
谢谢大家,再加点分!
yema55
2003-06-12
打赏
举报
回复
当前活动窗口
qrlvls
2003-06-12
打赏
举报
回复
up
triggerd
2003-06-12
打赏
举报
回复
父窗口处理,遇到子窗口,则交给子窗口,看看这段:
BOOL CALLBACK AboutDlgProc (HWND hDlg, UINT message,
WPARAM wParam, LPARAM lParam)
{
static HWND hCtrlBlock ;
static int iColor, iFigure ;
switch (message)
{
case WM_INITDIALOG:
..
case WM_COMMAND:
switch (LOWORD (wParam))
{
case IDOK:
iCurrentColor = iColor ;
iCurrentFigure = iFigure ;
EndDialog (hDlg, TRUE) ;
return TRUE ;
case IDCANCEL:
EndDialog (hDlg, FALSE) ;
return TRUE ;
case IDC_BLACK:
case IDC_RED:
SendMessage (GetDlgItem (hDlg, i),
BM_SETCHECK, i == LOWORD (wParam), 0) ;
return TRUE ;..
}
}
}
birdzxy
2003-06-12
打赏
举报
回复
我试了一下
EDIT获得焦点,在对话框中的WM_KEYDOWN中不能获得消息。
在对话框中子类化一下,新的EDIT可以先得到消息。
思危
2003-06-12
打赏
举报
回复
对话框先收到,你按一下回车就知道到了,如果CEdit先收到的话,是不会关闭对话框的。
对话框要先对收到的键盘消息进行一些处理,这与普通窗口是有区别的
cygroup
2003-06-12
打赏
举报
回复
按照Windows的标准做法,是唯一具有焦点的窗口EDIT先收到,但在MFC中,消息在消息映射中会不断上溯,大家都有机会处理消息,实际上在EDIT中按下ENTER键时,对话框会关闭,是因为消息到达对话框时,对话框对他进行了处理,你可以在CEdit派生类的PreTranslateMessage中对WM_KEYDOWN进行拦截并处理,会发现在关闭对话框前,你的CEdit派生类可以进行必要处理。或者在其父类--CDialog派生类的PreTranslateMessage屏蔽掉CDialog::PreTranslateMessage的调用,直接返回FALSE(不要返回TRUE,那样会使对话框失去对所有输入的反应),这样CDialog派生类就不会对ESC何ENTER作处理了,但建议不要使用这种方法,因为按下ESC和ENTER键会关闭对话框是Windows中的标准做法,最好不要违反标准操作习惯。
大数据专家傅一航
2003-06-12
打赏
举报
回复
去做一个工程,分别在App,Dlg,Edit中重载虚函数KeyDown,看看哪个虚函数先执行不就知道了?
mingbao
2003-06-11
打赏
举报
回复
不仅是子窗口收到,而且你窗口根本就收不到任何信息。
也就是说,当一个DLG执行Domodal()后,在对话框资源销毁之前,用户只与子对话框交互,并且父对话框收不到任何键盘、鼠标等消息!
BlueSky2008
2003-06-11
打赏
举报
回复
同意realdreamer(楼主英明,贫僧久仰大名,特来拜见)
rokia
2003-06-11
打赏
举报
回复
不对的,是有焦点的先得到,不过,会一直往父窗口转发。
FAICHEN
2003-06-11
打赏
举报
回复
同意realdreamer(楼主英明,贫僧久仰大名,特来拜见)
realdreamer
2003-06-11
打赏
举报
回复
在WINDOWS 的系统中窗口消息只有一个窗口收到. 有键盘焦点的窗口才能收到按键消息.
rokia
2003-06-11
打赏
举报
回复
App? 系统在分发消息的时候不是按照窗口来发的吗?
feiniaoliang
2003-06-11
打赏
举报
回复
应该是子窗口先收到!!!
Kevin
2003-06-11
打赏
举报
回复
最先得到消息的是App
overwind_slash
2003-06-11
打赏
举报
回复
Edit控件,你可以自己派生一个子类调试得到结果
子
窗口
与
父
窗口
的
消息
传递
昨天碰到一个问题,如果一个dialog上有一个Edit控件,这时候对Edit输入文字是Edit
先
得到的
按键
消息
还是
父
窗口
先
得到? 如果要拦截一个Edit的回车
消息
,在没有为Edit派生新的类的情况下,网上大部分的做法是重载
父
窗口
的PreTranlateMessage(),在这里对
按键
消息
进行拦截,但是大部分对这个都没有说明原因。 找了下资料大致的情况就
是子
窗口
与
父
窗口
共用一个
消息
队列。在
按键
的
子
窗口
和
父
窗口
的
消息
传递
【转】子
窗口
和
父
窗口
的
消息
传递 子
窗口
和
父
窗口
的
消息
传递 1. 什么是
窗口
2. 什么是
消息
3. 什么是
窗口
过程函数 4. 怎么创建
窗口
5.
消息
是怎么传递并处理的 用调用windows API的方法创建了两个
窗口
,
父
窗口
和子
窗口
。
父
窗口
处理了鼠标左键按下和鼠标右键按下的
消息
关于MFC中
父
窗口
与子
窗口
子
窗口
与子
窗口
之间的信息传递及控制
因为项目的需要,某子
窗口
B的设置变动,经常需要联动其他子
窗口
C,或者
父
窗口
A控件的名称更新,数据更新等等问题。再网上查了许久,不得解 ,特抛砖引玉,提供几种思路。 以下都以A为
父
窗口
,A1为A中的Tab控件, B和C为子
窗口
被非模态创建于A1上,所以之间的关系为 A | A1 A2
解决子
窗口
(视图)截获
父
窗口
消息
的2个办法(MFC)
这样的需求: 1.如果想在CView里面截获发给子框架Frame的
消息
怎么办? 2.假如子
窗口
拆分视图了, 那还得细分, 是所有视图都想截获
消息
,还是某个特定的视图想截获某个特定的
消息
.对于需求1: 办法1.是重载子框架Frame的WindowProc(UINT message, WPARAM wParam, LPARAM lParam)函数,将自定义的
消息
(大于WM_USER)转发给自己的视
QT
父
窗口
收到
子
窗口
的信号
这个
是子
窗口
里面的 signals: void sonMsg(const QString&); public slots://这个不用实现 void sendMsg() { QString s="suibianshenme"; emit sonMsg(s); } 随便弄个按钮 connect(bt,SIGNAL(click),this,SLOT(sendMsg()));
界面
15,978
社区成员
115,866
社区内容
发帖
与我相关
我的任务
界面
VC/MFC 界面
复制链接
扫一扫
分享
社区描述
VC/MFC 界面
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章