gpt4 book ai didi

c++ - Winapi 对话框在 Windows XP 上损坏

转载 作者:行者123 更新时间:2023-11-28 06:36:27 25 4
gpt4 key购买 nike

我有一个游戏,在启动时会显示对话框来选择语言。一切都适用于 windows 7/8 但不适用于 windows xp(或者如果我将兼容模式设置为 windows xp sp 3)。控件向下移动,窗口无法移动,关闭按钮不起作用。

On left good dialog, on right broken on windows xp

我这样创建对话框:

dialog_state = 0;
HWND hwnd = CreateDialog(NULL, MAKEINTRESOURCE(IDD_DIALOG1), NULL, PickLanguageDialogProc);
ShowWindow(hwnd, SW_SHOW);

MSG aMsg = {};
while(dialog_state == 0 && GetMessage(&aMsg, NULL, 0, 0))
{
if(!IsDialogMessage(hwnd, &aMsg))
{
TranslateMessage(&aMsg);
DispatchMessage(&aMsg);
}
}

消息处理程序:

static INT_PTR CALLBACK PickLanguageDialogProc(HWND hwndDlg, UINT uMsg, WPARAM wParam, LPARAM lParam)
{
switch(uMsg)
{
case WM_INITDIALOG:
// snip, fill list box
return TRUE;

case WM_CLOSE:
DestroyWindow(hwndDlg);
return TRUE;

case WM_DESTROY:
dialog_state = 2;
return TRUE;

case WM_COMMAND:
// snip
break;
}
return DefWindowProc(hwndDlg, uMsg, wParam, lParam);
}

对话代码:

IDD_DIALOG1 DIALOGEX 0, 0, 148, 146
STYLE DS_SETFONT | DS_MODALFRAME | DS_FIXEDSYS | DS_CENTER | WS_POPUP | WS_CAPTION | WS_SYSMENU
CAPTION "Select language"
FONT 8, "MS Shell Dlg", 400, 0, 0x1
BEGIN
DEFPUSHBUTTON "OK",IDOK,91,125,50,14
PUSHBUTTON "Cancel",IDCANCEL,7,125,50,14
LISTBOX IDC_LIST2,7,29,134,93,LBS_NOINTEGRALHEIGHT | WS_VSCROLL | WS_TABSTOP
LTEXT "Select language (can be changed in options later):",IDC_STATIC,7,7,134,21
END

使用 Visual Studio 2008 在 window 8 64 位上编译。应用程序是 32 位的。有什么想法吗?

最佳答案

改变

return DefWindowProc(hwndDlg, uMsg, wParam, lParam);

return FALSE;

解决我的问题。看起来对话框需要与普通窗口不同的处理方式。

关于c++ - Winapi 对话框在 Windows XP 上损坏,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26697814/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com