首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >WS_TABSTOP on WS_CHILD对话框

WS_TABSTOP on WS_CHILD对话框
EN

Stack Overflow用户
提问于 2014-01-11 13:44:54
回答 1查看 4K关注 0票数 5

我在处理简单的对话。对话框是从资源文件中创建的。创建对话框WS_CHILD时,一切都正常。我可以很容易地切换之间的项目(编辑框和按钮)使用VK_TAB键。但是,当我试图将对话框类型更改为WS_POPUP时,元素之间的切换就变得不可能了。焦点被卡在第一个元素上,当我按下VK_TAB键时,我会听到一个系统警报声音(比如"ding")。有什么建议吗?

编译器: gcc 4.6.x

资源示例:

代码语言:javascript
复制
DIALOG_CLIENT_SETTINGS DIALOG 0, 0, 156, 132
STYLE WS_CHILD | WS_VISIBLE | DS_CONTROL // Tab key stucks when change to WS_POPUP
CAPTION "Settings"
FONT 8, "Ms Shell Dlg"
LANGUAGE LANG_NEUTRAL, 0
{
    CONTROL "Account Settings", IDC_GROUPBOX_1, "BUTTON", BS_GROUPBOX | WS_CHILD | WS_VISIBLE, 8, 4, 140, 50
    CONTROL "Login:", IDC_STATIC_1, "STATIC", SS_RIGHT | WS_CHILD | WS_GROUP | WS_VISIBLE, 16, 20, 40, 8
    CONTROL "Password:", IDC_STATIC_2, "STATIC", SS_RIGHT | WS_CHILD | WS_GROUP | WS_VISIBLE, 16, 36, 40, 8
    EDITTEXT IDC_EDIT_1, 60, 18, 80, 12, ES_LEFT | WS_CHILD | WS_BORDER | WS_TABSTOP | WS_VISIBLE, WS_EX_WINDOWEDGE
    EDITTEXT IDC_EDIT_2, 60, 34, 80, 12, ES_LEFT | WS_CHILD | WS_BORDER | WS_TABSTOP | WS_VISIBLE, WS_EX_WINDOWEDGE
    CONTROL "Cancel", IDC_BUTTON_1, "BUTTON", BS_PUSHBUTTON | BS_VCENTER | BS_CENTER | WS_CHILD | WS_TABSTOP | WS_VISIBLE, 98, 112, 50, 14
    CONTROL "Apply", IDC_BUTTON_2, "BUTTON", BS_PUSHBUTTON | BS_VCENTER | BS_CENTER | WS_CHILD | WS_TABSTOP | WS_VISIBLE, 42, 112, 50, 14
}
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-01-12 07:39:45

您需要在主消息循环中使用IsDialogMessage,以便对话能够正确地截获和处理消息。您不需要解释您的消息循环是如何实现的,这将影响您是如何实现的。一种方法是直接对其进行编码:

代码语言:javascript
复制
while(GetMessage(&Msg, NULL, 0, 0))
{
    if(!IsDialogMessage(hDialogWnd, &Msg))
    {
        TranslateMessage(&Msg);
        DispatchMessage(&Msg);
    }
}

如果您在消息循环中使用某些框架(如MFC ),那么您将使用PreTranslateMessage的重写来拦截它,如下所示:

代码语言:javascript
复制
BOOL CMyDlg::PreTranslateMessage(MSG* pMsg)
{
   if(IsDialogMessage(pMsg))
      return TRUE;
   else 
      return CDialog::PreTranslateMessage(pMsg);
}
票数 6
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/21062990

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档