Windows API一日一练(7)ShowWindow函数

时间:2021-01-23 05:54:33
ShowWindow API 函数是显示窗口,但它在第一次调用和以后的调用是有区别的。第一次调用时,它的输入参数 nCmdShow 是需要输入 WinMain 函数里传入来的 nCmdShow 参数,而不能是其它参数。
 
函数声明如下:
WINUSERAPI
BOOL
WINAPI
ShowWindow(
    __in HWND hWnd,
    __in int nCmdShow);
hWnd 是窗口的句柄。
nCmdShow 是窗口显示的状态。可能设置的值如下:
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 是显示当前窗口,但窗口是最小化或最大化时会恢复窗口为原来的大小和位置。
 
调用这个函数的实例如下:
#001 BOOL InitInstance(HINSTANCE hInstance, int nCmdShow)
#002 {
#003  HWND hWnd;
#004 
#005  hInst = hInstance; // 保存实例句柄到全局变量里。
#006 
#007  hWnd = CreateWindow(szWindowClass,
#008         szTitle,
#009         WS_OVERLAPPEDWINDOW,
#010         CW_USEDEFAULT,
#011         0,
#012         CW_USEDEFAULT,
#013         0,
#014         NULL,
#015         NULL,
#016         hInstance,
#017         NULL);
#018 
#019  if (!hWnd)
#020  {
#021         return FALSE;
#022  }
#023 
#024  ShowWindow(hWnd, nCmdShow);
#025  UpdateWindow(hWnd);
#026 
#027  //
#028  // 蔡军生 2007/07/14
#029  // 显示窗口测试。
#030  MessageBox(NULL,_T(" 最大化 "),_T(" 测试 "),MB_OK);
#031 
#032  // 显示窗口为最大化。
#033  ShowWindow(hWnd, SW_SHOWMAXIMIZED);
#034 
#035  
#036  MessageBox(NULL,_T(" 原来位置 "),_T(" 测试 "),MB_OK);
#037 
#038  // 显示窗口为原来位置。
#039  ShowWindow(hWnd, SW_SHOWNORMAL);
#040 
#041 
#042  return TRUE;
#043 }
 
在第 24 行里先调用这个函数显示创建进程的窗口状态。
33 行里显示窗口为最大化。
39 行里显示窗口为原来的状态。
 
这样就可以掌握了 ShowWindow 函数的使用。