我在主窗口(hwnd)中制作一个按钮,当你点击一个按钮时,它会打开一个可以由主窗口控制的新窗口(hwndSec)! 当我点击一个按钮时,hwndSec出现了!当我点击其他按钮时,它可以被修改......但是当我关闭它并尝试重新打开它时,它不响应!所以按钮变得毫无用处!
这是一个简单的例子,一个按钮只是打开窗口,然后试图再次打开它。如何用Windows API重新打开一个关闭的窗口
我的hwndSec中的设定:
wincl.hInstance = hInstance;
wincl.lpszClassName = "HwndSecClass";
wincl.lpfnWndProc = WindowProcedureSec;
wincl.style = CS_DBLCLKS;
wincl.cbSize = sizeof (WNDCLASSEX);
/* Use default icon and mouse-pointer */
wincl.hIcon = LoadIcon (NULL, IDI_APPLICATION);
wincl.hIconSm = LoadIcon (NULL, IDI_APPLICATION);
wincl.hCursor = LoadCursor (NULL, IDC_ARROW);
wincl.lpszMenuName = NULL;
wincl.cbClsExtra = 0;
wincl.cbWndExtra = 0;
wincl.hbrBackground = (HBRUSH) COLOR_BACKGROUND;
if (!RegisterClassEx (&wincl))
return 0;
hwnd = CreateWindowEx (
0,
wincl.lpszClassName,
_T("Window 2"),
WS_OVERLAPPEDWINDOW,
CW_USEDEFAULT,
CW_USEDEFAULT,
500,
500,
HWND_DESKTOP,
NULL,
hInstance,
NULL
);
我提出两个窗口程序:
LRESULT CALLBACK WindowProcedure (HWND, UINT, WPARAM, LPARAM);
LRESULT CALLBACK WindowProcedureSec (HWND, UINT, WPARAM, LPARAM);
当我点击一个按钮,我把这个fonction:
ShowWindow(hwndSec,SW_SHOW);
,然后第二个窗口正常显示,当我关闭窗口时,它不会再出现。
LRESULT CALLBACK WindowProcedure (HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam)
{
switch (message) /* handle the messages */
{
case WM_CREATE:
CreateWindow("BUTTON",
"open",
WS_CHILD | WS_VISIBLE ,
200,100,
100,50,
hwnd,
(HMENU) ID_BUTTON,
NULL,
NULL);
break;
case WM_COMMAND:
switch(LOWORD(wParam))
{
case ID_BUTTON :
//printf("%s",(char*)GetLastError());
ShowWindow(hwndSec,SW_SHOW);
break;
}
break;
case WM_DESTROY:
PostQuitMessage (0);
break;
default:
return DefWindowProc (hwnd, message, wParam, lParam);
}
return 0;
}
LRESULT CALLBACK WindowProcedureSec (HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam)
switch (message)
{
case WM_DESTROY:
PostMessage(hwnd, WM_CLOSE, 0, 0);
break;
default:
return DefWindowProc (hwnd, message, wParam, lParam);
}
return 0;
}
它已关闭。没有更多。它已不复存在。它已经过期,并已去见其制造商。它是一只死鹦鹉。你将不得不再次调用CreateWindow()。 –
或者您可以隐藏该窗口并使用ShowWindow再次显示它 – Asesh
该代码表明缺乏洞察力。你真的需要重新开始,并首先获得基本知识。获取一本好书,比如Petzold的[编程Windows®,第五版](https://www.amazon.com/dp/157231995X)。 – IInspectable