对话框位于错误的位置
Dialog in wrong place
我对这个问题不知所措,甚至不确定要发布什么代码。
我有一个 c++ 应用程序。初始窗口具有编辑控件、自定义控件和菜单。当用户按 F5 时,将打开一个新窗口,其中包含自己的消息循环。然后,新窗口将打开一个对话框,并且按预期是模式的。
奇怪的是对话框似乎隐藏在第二个窗口后面。我必须按 alt-tab 键转到第一个窗口,然后按 alt-tab 键返回第二个窗口才能进入对话框。
如果我取消对话框,第二个窗口将被销毁(如预期的那样),并显示一个消息框(如预期),但该消息框似乎隐藏在第一个窗口后面。同样,我必须按 alt-tab 两次才能将消息框放在最前面,并且确定它。
有没有人知道什么会导致对话框和消息框出现这种奇怪的弹出行为?
谢谢!
用于创建对话框的代码
INT_PTR ip = DialogBox(GetModuleHandle(NULL), MAKEINTRESOURCE(IDD_AMBIGUOUS), this->hWnd, DlgAmbiguous);
Dlg模棱两可的过程
的代码INT_PTR CALLBACK DlgAmbiguous(HWND hDlg, UINT message, WPARAM wParam, LPARAM lParam)
{
UNREFERENCED_PARAMETER(lParam);
switch (message)
{
case WM_INITDIALOG:
{
HWND hStaticTerm = GetDlgItem(hDlg, IDC_TERM);
SetWindowText(hStaticTerm, lpAmbiguousTerm);
if (wcscmp(lpAmbiguousTerm, L"canvas") == 0)
{
HWND hComboBox = GetDlgItem(hDlg, IDC_MEANING);
SendMessage(hComboBox, CB_ADDSTRING, NULL, reinterpret_cast<LPARAM>(_T("Program Window")));
SendMessage(hComboBox, CB_ADDSTRING, NULL, reinterpret_cast<LPARAM>(_T("Region in Program Window")));
}
return (INT_PTR)TRUE;
}
case WM_COMMAND:
if (LOWORD(wParam) == IDOK)
{
HWND hComboBox = GetDlgItem(hDlg, IDC_MEANING);
iAmbiguousResult = SendMessage(hComboBox, CB_GETCURSEL, NULL, NULL);
EndDialog(hDlg, iAmbiguousResult + 100);
return (iAmbiguousResult == -1) ? FALSE : TRUE;
}
else if (LOWORD(wParam) == IDCANCEL)
{
EndDialog(hDlg, DLG_CANCEL);
return (INT_PTR)FALSE;
}
break;
}
return (INT_PTR)FALSE;
打开窗口时,无论它是否在同一线程上运行,指定其父窗口都是有意义的。这将强制新窗口出现在其父窗口上方。这同样适用于对话框:
INT_PTR WINAPI DialogBox(
_In_opt_ HINSTANCE hInstance,
_In_ LPCTSTR lpTemplate,
_In_opt_ HWND hWndParent,
_In_opt_ DLGPROC lpDialogFunc
);
请注意第三个参数。将窗口置于顶部的其他选项是调用 SetWindowPos
函数。
相关文章:
- OpenGL 4.3 错误地将第 4 个纹理坐标映射到与第 3 个纹理坐标相同的位置
- 0xC0000005:访问冲突写入位置0xCDCDCDCD动态分配错误
- 奇怪的Arduino C++编译错误取决于文件位置
- 我收到分段错误,但不了解分段错误发生的位置
- 访问特定阵列位置/索引时出现分段错误
- boost::p rogram_options 在指定意外的位置参数时不报告任何错误
- 在尝试使用CUDA分配内存时,我遇到了访问冲突写入位置错误
- 在 C 代码中调用 Python 函数时第三次出现访问冲突写入位置错误
- C++访问冲突读取位置错误
- 无法修复访问冲突读取位置错误
- 如何修复访问冲突读取位置错误
- std::out_of_range 在 getline 的内存位置错误
- 路径位置错误:在 PATH 中找不到程序"make"?
- C++:std::复制失败,出现访问冲突读取位置错误
- C++“访问冲突读取位置”错误
- 线程c++,访问冲突读取位置x错误
- 访问冲突写入位置错误
- cocos2dx精灵设置位置错误
- 当我试图从文件中读取时,访问冲突写入位置错误
- OpenGl的错误.运行时立方体顶点位置错误