gpt4 book ai didi

c++ - 如何在按 C++ 的按钮上显示第二个窗口

转载 作者:行者123 更新时间:2023-11-30 05:13:02 26 4
gpt4 key购买 nike

在我制作一个包罗万象的大程序之前,我一直在做很多小项目来测试一些功能。该程序有两个相同的窗口。它们看起来像这样:

hwnd = CreateWindowEx (
0,
szClassName,
_T("Win1"),
WS_SYSMENU | WS_MINIMIZEBOX,
CW_USEDEFAULT,
CW_USEDEFAULT,
400,
400,
HWND_DESKTOP,
NULL,
hThisInstance,
NULL
);
hwnd2 = CreateWindowEx (
0,
szClassName,
_T("Win2"),
WS_SYSMENU | WS_MINIMIZEBOX,
CW_USEDEFAULT,
CW_USEDEFAULT,
400,
400,
HWND_DESKTOP,
NULL,
hThisInstance,
NULL
);

其中一个窗口有一个按钮,上面写着“显示”。
(来源:000webhostapp.com)

当我点击“显示”时,我希望 Win2 在 Win1 旁边弹出。我想在同一个 switch(message) 循环中执行所有操作,以避免通过多个循环传递变量。这就是我试图让 Win2 弹出的方式:

(我只包含了代码的重要部分)

switch(message)
{
case WM_COMMAND:
switch (LOWORD(wParam))
{
case 1:
ShowWindow (hwnd2, nCmdShow);
break;
}
break;
case WM_DESTROY:
PostQuitMessage(0);
break;

default:
return DefWindowProc(hwnd, message, wParam, lParam);
}

不幸的是,这不起作用。如何在没有第二个 switch(message) 循环的情况下让 Win2 出现?

如果需要我的全部代码,这里是:CLICK ME!

如有任何帮助,我们将不胜感激。

-谢谢

最佳答案

您的问题可以通过以下方式解决:

  • 在全局范围内制作hWnd1hWnd2。我不认为你的代码有效,因为它们在 WinMain 中声明,但从窗口过程中调用。

所以代码示例如下所示:

#include <tchar.h>
#include <windows.h>

HWND hwnd; /* This will be Win1 in global scope*/
HWND hwnd2; /* This will be Win2 global scope*/
// ...

在窗口过程中将 nCmdShow 更改为 SW_SHOWNORMALSW_SHOW:

case WM_COMMAND:
switch (LOWORD(wParam)){
case 1:
ShowWindow (hwnd2, SW_SHOWNORMAL);
break;
}

休息;

关于c++ - 如何在按 C++ 的按钮上显示第二个窗口,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44144761/

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