ShowWindow 的 API 函数是显示窗口,但它在第一次调用和以后的调用是有区别的。第一次调用时,它的输入参数 nCmdShow 是需要输入 WinMain 函数里传入来的 nCmdShow 参数,而不能是其它参数。函数声明如下:
WINUSERAPI BOOL WINAPI ShowWindow(
in HWND hWnd,
in int nCmdShow);
hWnd 是窗口的句柄。
nCm dShow 是窗口显示的状态。可能设置的值如下:
- SW_FORCEMINIMIZE 是强制窗口最小化,主要使用在非窗口主线程的其它线程来操作。
- SW_HIDE 是显示窗口为隐藏状态。
- SW_MAXIMIZE 是显示窗口为最大化。
- SW_MINIMIZE 是显示窗口为最小化。
- SW_RESTORE 是从任务里恢复窗口显示。
- SW_SHOW 是激活窗口为当前窗口,并且显示为当前的大小和位置。
- SW_SHOWDEFAULT 是创建进程时显示窗口的值。
- SW_SHOWMAXIMIZED 是激活窗口为当前窗口,并且显示最大化。
- SW_SHOWMINIMIZED 是激活窗口为当前窗口,并且显示最小化。
- SW_SHOWMINNOACTIVE 是显示窗口为最小化,但不激活它作为当前窗口。
- SW_SHOWNA 是显示为当前的大小和位置,但不激活它作为当前窗口。
- SW_SHOWNOACTIVATE 是显示当前窗口,但不激活它作为当前窗口。
- SW_SHOWNORMAL 是显示当前窗口,但窗口是最小化或最大化时会恢复窗口为原来的 大小和位置。
调用这个函数的实例如下:
BOOL InitInstance(HINSTANCE hInstance, int nCmdShow)
{
HWND hWnd;
hInst = hInstance; // 保存实例句柄到全局变量里。
hWnd = CreateWindow(szWindowClass,
szTitle,
WS_OVERLAPPEDWINDOW,
CW_USEDEFAULT,
0,
CW_USEDEFAULT,
0,
NULL,
NULL,
hInstance,
NULL);
if (!hWnd)
{
return FALSE;
}
ShowWindow(hWnd, nCmdShow);
UpdateWindow(hWnd);
//显示窗口为最大化。
ShowWindow(hWnd, SW_SHOWMAXIMIZED);
//显示窗口为原来位置。
ShowWindow(hWnd, SW_SHOWNORMAL);
return TRUE;
}
- 第 24 行里先调用这个函数显示创建进程的窗口状态。
- 第 28 行里显示窗口为最大化。
- 第 30 行里显示窗口为原来的状态。
这样就可以掌握了 ShowWindow 函数的使用。