有关VC tab键切换控件的小问题

wead 2008-01-31 08:54:26
大家晚上好,
请问我用create方法(必须用create方法,不能DoModal)创建了一个dialog窗体,
而且用ctrl+d也调好了,各个控件之间的Tab顺序,而且也设置了Tabstop属性为true
可是为什么按tab键的时候不管用呢(不能切换且获得tab焦点)?
而且窗体类重载的PreTranslateMessage(MSG* pMsg)函数也不管用。。。。
我不太清楚,用sky++截获消息,发现比domodal少了很多。。尤其是响应键盘的
请问如何在create创建出来的窗体上,实现tab键可以切换控件呢?
...全文
220 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
cnzdgs 2008-01-31
  • 打赏
  • 举报
回复
在你的消息循环中TranslateMessage(&msg)的前面加一行
	PreTranslateMessage(&msg);
wead 2008-01-31
  • 打赏
  • 举报
回复
BOOL CViewForm1::PreTranslateMessage(MSG* pMsg)
{
// TODO: 在此添加?用代?和/或?用基?
if(IsDialogMessage(pMsg)) //在此处下断点。。。程序永远不会运行到此处
return TRUE;
else
if (pMsg->message==WM_KEYDOWN && pMsg->wParam==VK_RETURN)
{
CWnd* wnd = FromHandle(pMsg->hwnd);
int select_enter = wnd->GetDlgCtrlID();
switch(select_enter)
{
case IDC_EDIT2:
OnBnClickedButton1();
break;
case 1001:
OnBnClickedButton7();
break;
}
}
return CDialog::PreTranslateMessage(pMsg);
}
wead 2008-01-31
  • 打赏
  • 举报
回复
而且窗体类重载的PreTranslateMessage(MSG* pMsg)函数也不管用。。。。
是指根本进入不了此函数。。下断点不管用。。。
youngwolf 2008-01-31
  • 打赏
  • 举报
回复
还有,如果IsDialogMessage返回真,则直接退出PreTranslateMessage,否则执行父窗口的父类的PreTranslateMessage函数。
youngwolf 2008-01-31
  • 打赏
  • 举报
回复
在父窗口的PreTranslateMessage函数里面:
::IsDialogMessage(yourdlg, pMsg)

15,979

社区成员

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

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