社区
界面
帖子详情
非可编辑控件接收方向键按键消息
MFCJCK
2010-08-27 09:27:44
问题:在对对话框中的一个非可编辑控件,如按钮控件,如何接收方向键按键消息。
失败的方法:我试过在按钮中响应WM_CHAR、WM_KEYDOWN好像都不行。
现象:我按下方向键 好像只是对话框焦点在几个控件中切换。求助高手了~~~
...全文
184
11
打赏
收藏
非可编辑控件接收方向键按键消息
问题:在对对话框中的一个非可编辑控件,如按钮控件,如何接收方向键按键消息。 失败的方法:我试过在按钮中响应WM_CHAR、WM_KEYDOWN好像都不行。 现象:我按下方向键 好像只是对话框焦点在几个控件中切换。求助高手了~~~
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
11 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
MFCJCK
2010-08-27
打赏
举报
回复
在大家指导下 我找到了这个WM_GETDLGCODE。可以在控件中处理方向键和TAB键消息。多谢大家,尤其感谢是wujiabao。
wujiabao
2010-08-27
打赏
举报
回复
BOOL CREdit::Create(HWND pParent, int x, int y, int w, int h, int style)
{
m_pParent = pParent;
WNDCLASSEX wcex;
int ret;
wcex.cbSize = sizeof(WNDCLASSEX);
wcex.style = CS_HREDRAW | CS_VREDRAW;
wcex.lpfnWndProc = newwndproc;
wcex.cbClsExtra = 0;
wcex.cbWndExtra = 0;
wcex.hInstance = (HINSTANCE)GetWindowLongPtr(pParent,GWL_HINSTANCE);
wcex.hIcon = NULL;
wcex.hCursor = LoadCursor(NULL, IDC_IBEAM);
wcex.hbrBackground = (HBRUSH)(COLOR_GRAYTEXT);
wcex.lpszMenuName = NULL;
wcex.lpszClassName = szWindowClassRedit;
wcex.hIconSm = NULL;
ret = RegisterClassEx(&wcex);
ret = GetLastError();
m_hWnd = CreateWindowEx(WS_EX_ACCEPTFILES,szWindowClassRedit, TEXT("redit"), style | WS_TABSTOP, x, y, w, h, pParent, NULL, NULL,0);
ret = GetLastError();
if(m_hWnd == NULL) return FALSE;
return TRUE;
}
MFCJCK
2010-08-27
打赏
举报
回复
[Quote=引用 7 楼 wujiabao 的回复:]
可以的, 我刚刚试了我的程序
[/Quote]
能把部分代码 发我邮箱看看嘛?mfcjck@yeah.net 谢谢啦
MFCJCK
2010-08-27
打赏
举报
回复
[Quote=引用 3 楼 visualeleven 的回复:]
对话框默认是不直接处理WM_KEYDOWN消息的,你可以重载PreTranslateMessage虚函数,在它里面处理WM_KEYDOWN消息
[/Quote]
我是要在控件中响应 方向键按键事件,请问有什么方法吗?
wujiabao
2010-08-27
打赏
举报
回复
可以的, 我刚刚试了我的程序
MFCJCK
2010-08-27
打赏
举报
回复
[Quote=引用 5 楼 wujiabao 的回复:]
试一下我的方法,100%可以, 我也遇到跟我想同的问题, 就这么解决的
[/Quote]
我是MFC里 控件对方向键的响应。。我好想还没看懂您的方法哦,麻烦您在解释一下,行吗?
wujiabao
2010-08-27
打赏
举报
回复
试一下我的方法,100%可以, 我也遇到跟我想同的问题, 就这么解决的
MFCJCK
2010-08-27
打赏
举报
回复
PreTranslateMessage(MSG* pMsg) 好像也不行。小弟愚笨,还请说明。
我要在控件中响应方向键。。但控件直接把方向键传给了对话框类。请问该怎么在控件中截获。
Eleven
2010-08-27
打赏
举报
回复
对话框默认是不直接处理WM_KEYDOWN消息的,你可以重载PreTranslateMessage虚函数,在它里面处理WM_KEYDOWN消息
wujiabao
2010-08-27
打赏
举报
回复
用CreateWindexEx创建窗口, 窗口的dwExStyle为WS_EX_ACCEPTFILES
dwStyle为WS_CHILE|WS_VISIBLE|WS_TABSTOP
创建完成后, 窗口的焦点一般不会在你这个窗口上, 即时你使用了SetFocus
所以你在消息处函数里加入
case WM_LBUTTONDOWN:
case WM_RBUTTONDOWN:
SetFocus(hwnd);
这样你用鼠标点击一下你的窗口,获得焦点后,就可以接收WM_KEYDOWN消息了
na_he
2010-08-27
打赏
举报
回复
PreTranslateMessage(MSG* pMsg) 中处理了
嵌入式GUI开发实战:SLIDER与SPINBOX
控件
深度解析与应用
在嵌入式系统开发中,图形用户界面(GUI)是实现人机交互的核心组件,其设计直接影响产品的用户体验与操作效率。GUI
控件
的实现原理基于窗口对象与
消息
驱动机制,通过层次化管理和统一的
消息
派发,实现了界面元素与业务逻辑的有效解耦。这种架构的技术价值在于提升了代码的可维护性和界面的响应性能,尤其在资源受限的嵌入式环境中至关重要。常见的数值输入
控件
,如滑块(SLIDER)和微调框(SPINBOX),广泛应用于参数调节、设备设置等场景,它们将用户的物理操作精准映射为目标数值的变化。本文聚焦于emWin库中的这两个核心控
嵌入式GUI开发实战:emWin核心
控件
原理与应用深度解析
在嵌入式系统开发中,图形用户界面(GUI)是实现人机交互的关键组件,其核心在于高效管理有限的硬件资源并提供流畅的交互体验。GUI库通过封装底层图形绘制、事件处理和窗口管理机制,为开发者提供了一套标准化的
控件
(Widgets)API,从而简化了复杂界面的构建过程。从技术原理上看,嵌入式GUI通常基于
消息
驱动架构,通过窗口管理器(WM)组织
控件
,并利用
消息
与通知机制在
控件
与应用程序间传递用户操作,以此实现界面与业务逻辑的解耦。这种设计不仅提升了代码的复用性和一致性,更是确保界面响应速度和内存效率的技术基石。其技
嵌入式GUI开发实战:emWin中HEADER与ICONVIEW
控件
深度解析与应用
在嵌入式系统开发中,图形用户界面(GUI)是提升产品交互体验的核心组件。其底层依赖于高效的图形库进行界面渲染与事件管理,通过
控件
(Widget)实现各种交互元素。emWin作为一款广泛应用的嵌入式图形库,提供了丰富的
控件
集来构建直观的界面。HEADER
控件
专为数据表格设计,通过管理列标题和列宽,实现了清晰的数据结构化展示与交互式调整,其轻量化的设计哲学确保了在资源受限环境下的高效运行。ICONVIEW
控件
则用于构建图标视图菜单,支持网格布局、透明效果与滚动浏览,极大地简化了导航界面的开发。理解这些
控件
的设计
嵌入式GUI开发:emWin中MULTIEDIT与MULTIPAGE
控件
的核心原理与实战应用
在嵌入式系统开发中,图形用户界面(GUI)是连接用户与设备的关键桥梁,其核心在于高效管理用户输入与界面空间。emWin作为一款成熟的嵌入式图形库,通过其
控件
集为开发者提供了构建直观界面的基础组件。其中,MULTIEDIT
控件
实现了多行文本
编辑
功能,它内部采用分层状态管理机制,支持插入、覆盖、自动换行等多种模式,并能通过通知机制实时响应文本变化,这对于需要用户输入或显示大段文本(如日志记录、配置信息)的场景至关重要。而MULTIPAGE
控件
则运用了窗口管理技术,通过标签页(Tab)组织多个逻辑页面,实现了内容
emWin MULTIEDIT与MULTIPAGE
控件
深度解析与实战应用
在嵌入式GUI开发中,窗口
控件
(Widgets)是构建交互式用户界面的核心组件,其设计原理直接影响着用户体验与开发效率。通过理解
控件
的
消息
循环、父子窗口层级与资源管理机制,开发者能够高效地组织复杂界面逻辑。MULTIEDIT
控件
作为嵌入式环境下的多行文本处理利器,其核心价值在于支持多行
编辑
、光标移动与自动滚动,可灵活切换为文本
编辑
器、只读显示器或密码输入框,广泛应用于系统日志查看、配置表单等场景。MULTIPAGE
控件
则通过标签页(Tab)管理界面空间,实现功能的逻辑分类与动态加载,是构建系统设置菜单、数据
界面
15,976
社区成员
115,866
社区内容
发帖
与我相关
我的任务
界面
VC/MFC 界面
复制链接
扫一扫
分享
社区描述
VC/MFC 界面
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章