如何解决对话框打开后立即关闭
我有一个用于用户输入的对话框,它工作得很好,现在无论我做什么,对话框都会弹出一秒钟,然后程序在没有警告的情况下终止,调用 {{1}即使在我注释掉所有可能的退出之后。只有一个错误,即 WM_DESTROY
错误,但每次出现运行时错误时都会出现该错误,并且在试图找到解决方案时毫无用处。
这是我的代码:
project.cpp
no_init_all
项目.rc
BOOL CreateMyDialog(HINSTANCE hInstance) {
HWND hWnd = CreateDialog(NULL,MAKEINTRESOURCE(myDialogResource),NULL,(DLGPROC)myDialogProcess);
if (!hWnd) {
return FALSE;
}
myDialogGlobalHandle = hWnd;
ShowWindow(hWnd,SW_SHOW);
//UpdateWindow(hWnd);
return TRUE;
}
INT_PTR CALLBACK myDialogProcess(HWND hWnd,UINT msg,WPARAM wParam,LPARAM lParam) {
INITCOMMONCONTROLSEX InitCtrlEx;
InitCtrlEx.dwSize = sizeof(INITCOMMONCONTROLSEX);
InitCtrlEx.dwICC = ICC_PROGRESS_CLASS;
InitCommonControlsEx(&InitCtrlEx);
switch(msg) {
case WM_INITDIALOG: {
//Do stuff to prep the dialog
return TRUE;
}
case WM_DESTROY: {
PostQuitMessage(WM_QUIT);
break;
}
}
return TRUE;
}
这是缩短的代码,即使这样,对话框也会在其自身顶部打开并在屏幕上出现故障。使用我的完整代码,它通常会在应用程序关闭前出现一瞬间。我相信如果我能解决这个小问题,我可以通过我的对话找到问题。所以我的问题是,有什么问题?
编辑:
这是我的myDialogResource DIALOGEX 600,400,286,108
STYLE DS_SYSMODAL | DS_SETFONT | DS_SETFOREGROUND | DS_FIXEDSYS | WS_POPUP | WS_VISIBLE | WS_CAPTION
EXSTYLE WS_EX_OVERLAPPEDWINDOW /*| WS_EX_APPWINDOW*/
CAPTION "My Dialog"
FONT 8,"MS Shell Dlg",0x1
BEGIN
COMBOBOX dropdownList,112,7,61,30,CBS_DROPDOWNLIST | WS_VSCROLL | WS_TABSTOP
//... it's all syntactically correct controls that still work the split second the dialog is on the screen
END
:
wWinMain
解决方法
事实证明,我所有的代码都是正确的。问题在于我的对话过程中的 case
语句,出于某种原因,Visual Studio 不喜欢 case
语句中的括号。在尝试了所有方法,然后将它们替换为 break;
语句后,我的代码又开始工作了。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。