请教BUTTON等控件的TABSTOP问题。

???2008 2014-05-03 11:01:03

我使用CreateWindow创建了Button、Checbox、RadioButton等控件,并且设置了 TABSTOP样式。
创建代码如下:
m_hForward = CreateWindow(_T("Button"), _T("下一步(&N) >"),
WS_CHILD | WS_VISIBLE | BS_DEFPUSHBUTTON | WS_TABSTOP,
330, 328, 100, 20, m_hWnd, (HMENU)IDC_FORWARD, g_hInst, NULL);

m_hCancel = CreateWindow(_T("Button"), _T("取消"),
WS_CHILD | WS_VISIBLE | BS_PUSHBUTTON | WS_TABSTOP,
413, 328, 100, 20, m_hWnd, (HMENU)IDC_CANCEL, g_hInst, NULL);

并在消息处理中,
使用
if (msg.message==WM_KEYDOWN && msg.wParam==VK_TAB)
{
SetFocus(...);
}

代码没有使用MFC,直接winapi开发。

问题如下:
如果使用清单工具内嵌XP的样式,则:使用TAB键时,切换的按钮,没有虚线,无法接受回车键消息。
切换时,不知道当前切换到哪个控件之上。

如果不使用清单工具,则软件界面为windows经典界面,使用TAB键切换的按钮有虚线,但是无法接受回车键消息。

另外,我直接SetFocus某一个BUTTON,BUTTON上也没有虚线,也不能接受键盘消息。

本人很少使用windows sdk直接编程。请教各位大神,这个如何解决?
...全文
265 6 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
向立天 2014-06-03
  • 打赏
  • 举报
回复
您好 我是本版版主 此帖已多日无人关注 请您及时结帖 如您认为问题没有解决可按无满意结帖处理 另外本版设置了疑难问题汇总帖 并已在版面置顶 相关规定其帖子中有说明 您可以根据规定提交您帖子的链接 如您目前不想结帖只需回帖说明 我们会删除此结帖通知 见此回复三日内无回应 我们将强制结帖 相关规定详见界面界面版关于版主结帖工作的具体办法
???2008 2014-05-03
  • 打赏
  • 举报
回复
早已经测试,与此无关。 主要是,按钮虚线都没有出来。说明该按钮,未接受键盘消息。 你可以自己建一个win32工程,测一下。
china_119 2014-05-03
  • 打赏
  • 举报
回复
不响应回车消息是不是应该增加回车键的处理啊。毕竟你不是用的MFC。消息映射可能需要全部自行解析处理 if (msg.message==WM_KEYDOWN && msg.wParam==VK_ENTER) { ...... }
???2008 2014-05-03
  • 打赏
  • 举报
回复
引用 4 楼 worldy 的回复:
经实际测试,以下代码工作非常正常
m_hButton=CreateWindow(
		_T("button"),
		_T("按键XXX"),
		WS_CHILD|WS_VISIBLE|WS_TABSTOP|BS_DEFPUSHBUTTON,
		r.left,
		r.top+60,
		r.Width(),
		r.Height(),
		m_hWnd,
		(HMENU)8885,
		AfxGetInstanceHandle(),
		NULL);
可否将你正常的代码以及生成的EXE文件email给我?谢谢! 4979355@qq.com
worldy 2014-05-03
  • 打赏
  • 举报
回复
经实际测试,以下代码工作非常正常
m_hButton=CreateWindow(
		_T("button"),
		_T("按键XXX"),
		WS_CHILD|WS_VISIBLE|WS_TABSTOP|BS_DEFPUSHBUTTON,
		r.left,
		r.top+60,
		r.Width(),
		r.Height(),
		m_hWnd,
		(HMENU)8885,
		AfxGetInstanceHandle(),
		NULL);
china_119 2014-05-03
  • 打赏
  • 举报
回复
建了个类似的工程测试了一下。XP风格下可以正常的画虚线。没发现你说的问题。 关于消息响应确定需要对回车键消息进行处理。回车键的键值为VK_RETURN。在消息里需要去解析当前获取焦点的窗口是哪一个 我卡在这里了。用GetFocus或 GetActiveWindow获取活动窗口句柄然后去比较。始终无法得到正确结果。另外我createwindow时 没有指定menu(设为NULL).你可以自行测试一下是否与此有关
  ::首页 >> 文档中心 >> 在线杂志 >> 属性页 [ 在线杂志 第15期 ]

15,980

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 界面
社区管理员
  • 界面
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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