Windows API ShowWindow和UpdateWindow

ShowWindow函数原型

WINUSERAPI
BOOL
WINAPI
ShowWindow(
    __in HWND hWnd,
    __in int nCmdShow);

功能是:设置指定窗口的显示状态

参数说明
hWnd窗口句柄
nCmdShow指定窗口如何显示

       如果程序提供STARTUPINFO结构,那程序第一次调用ShowWindow时nCmdShow参数会被忽略,否则在第一次调用ShowWindow该值应是WinMain中的nCmdShow参数值。其值有:

说明
SW_HIDE隐藏窗口并激活其他窗口。nCmdShow=0
SW_SHOWNORMAL/SW_NORMAL激活并显示一个窗口。如果窗口被最小化或最大化,系统将其恢复到原来的尺寸和大小。应用程序在第一次显示窗口的时候应该指定此标志。nCmdShow=1
SW_SHOWMINIMIZED激活窗口并将其最小化。nCmdShow=2
SW_SHOWMAXIMIZED激活窗口并将其最大化。nCmdShow=3
SW_MAXIMIZE最大化指定的窗口。nCmdShow=3
SW_SHOWNOACTIVATE以窗口最近一次的大小和状态显示窗口。激活窗口仍然维持激活状态。nCmdShow=4
SW_SHOW在窗口原来的位置以原来的尺寸激活和显示窗口。nCmdShow=5
SW_MINIMIZE最小化指定的窗口并且激活在Z序中的下一个顶层窗口。nCmdShow=6
SW_SHOWMINNOACTIVE窗口最小化,激活窗口仍然维持激活状态。nCmdShow=7
SW_SHOWNA以窗口原来的状态显示窗口。激活窗口仍然维持激活状态。nCmdShow=8
SW_RESTORE激活并显示窗口。如果窗口最小化或最大化,则系统将窗口恢复到原来的尺寸和位置。在恢复最小化窗口时,应用程序应该指定这个标志。nCmdShow=9
SW_SHOWDEFAULT依据在STARTUPINFO结构中指定的SW_FLAG标志设定显示状态,STARTUPINFO 结构是由启动应用程序的程序传递给CreateProcess函数的。nCmdShow=10
SW_FORCEMINIMIZE在WindowNT5.0中最小化窗口,即使拥有窗口的线程被挂起也会最小化。在从其他线程最小化窗口时才使用这个参数。nCmdShow=11
返回值

若窗口之前可见,则返回值非零;若窗口之前被隐藏,则返回值为零。

注意:应用程序第一次调用ShowWindow时,应该使用WinMain函数的nCmdshow参数作为它的nCmdShow参数。在随后调用ShowWindow函数时,必须使用列表中的一个给定值,而不是由WinMain函数的nCmdSHow参数指定的值

头文件

头文件:Windows.h
库文件:user32.lib
限制:Windows NT:3.1以上版本;Windows:95以上版本:Windows CE:1.0以上版本

UpdateWindow函数原型

WINUSERAPI
BOOL
WINAPI
UpdateWindow(
    __in HWND hWnd);

       功能:更新指定窗口的客户区。若窗口更新的区域不为空,UpdateWindow函数就发送一个WM_PAINT消息来更新指定窗口的客户区。函数绕过应用程序的消息队列,直接发送WM_PAINT消息给指定窗口的窗口过程,如果更新区域为空,则不发送消息。
       调用Invalidate等函数后窗口不会立即重绘,这是由于WM_PAINT消息的优先级很低,它需要等消息队列中的其它消息发送完后才能被处理。调用UpdateWindow函数可使WM_PAINT被直接发送到目标窗口,从而导致窗口立即重绘。
       调用UpdateWindow()时将会发送一个WM_PAINT消息,而应用程序在接收到WM_PAINT消息后,将自动地调用Invalidate()。所以,在程序代码中,不一定要出现Invalidate()!UpdateWindow()就是立即发送WM_PAINT消息,UpdateWindow要求系统对区域进行立即重绘,其只对声明为无效的区域起作用,而Invalidate()是声明无效区域的方式之一。Invalidate()表示客户区域无效,在下次WM_PAINT发生时重绘。而WM_PAINT是由系统进行维护的,每当CWnd的更新区域不为空,并且在应用程序的窗口消息队列中没有其它消息时,Windows就发送一条WM_PAINT消息。

参数说明
hWnd窗口句柄
返回值

若函数调用成功则返回非零值,否则返回零。

头文件

头文件:Windows.h
库文件:user32.lib
限制:Windows NT/2000/XP: 包括 Windows NT 3.1 及以后版本;Windows 95/98/Me: 包括 Windows 95 及以后版本

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Windows APIWindows操作系统提供的一组核心API函数,可以用于开发Windows应用程序。这些API函数提供了许多功能,例如窗口管理、文件操作、网络通信等。使用Windows API可以让开发者更加灵活地控制Windows系统,实现更加复杂的功能。以下是一个使用Windows API创建一个简单窗口的示例: ```c #include <windows.h> LRESULT CALLBACK WndProc(HWND, UINT, WPARAM, LPARAM); int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, PSTR szCmdLine, int iCmdShow) { static TCHAR szAppName[] = TEXT("HelloWin"); HWND hwnd; MSG msg; WNDCLASS wndclass; wndclass.style = CS_HREDRAW | CS_VREDRAW; wndclass.lpfnWndProc = WndProc; wndclass.cbClsExtra = 0; wndclass.cbWndExtra = 0; wndclass.hInstance = hInstance; wndclass.hIcon = LoadIcon(NULL, IDI_APPLICATION); wndclass.hCursor = LoadCursor(NULL, IDC_ARROW); wndclass.hbrBackground = (HBRUSH) GetStockObject(WHITE_BRUSH); wndclass.lpszMenuName = NULL; wndclass.lpszClassName = szAppName; if (!RegisterClass(&wndclass)) { MessageBox(NULL, TEXT("This program requires Windows NT!"), szAppName, MB_ICONERROR); return 0; } hwnd = CreateWindow(szAppName, // window class name TEXT("The Hello Program"), // window caption WS_OVERLAPPEDWINDOW, // window style CW_USEDEFAULT, // initial x position CW_USEDEFAULT, // initial y position CW_USEDEFAULT, // initial x size CW_USEDEFAULT, // initial y size NULL, // parent window handle NULL, // window menu handle hInstance, // program instance handle NULL); // creation parameters ShowWindow(hwnd, iCmdShow); UpdateWindow(hwnd); while (GetMessage(&msg, NULL, 0, 0)) { TranslateMessage(&msg); DispatchMessage(&msg); } return msg.wParam; } LRESULT CALLBACK WndProc(HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam) { HDC hdc; PAINTSTRUCT ps; RECT rect; switch (message) { case WM_CREATE: return 0; case WM_PAINT: hdc = BeginPaint(hwnd, &ps); GetClientRect(hwnd, &rect); DrawText(hdc, TEXT("Hello, Windows API!"), -1, &rect, DT_SINGLELINE | DT_CENTER | DT_VCENTER); EndPaint(hwnd, &ps); return 0; case WM_DESTROY: PostQuitMessage(0); return 0; } return DefWindowProc(hwnd, message, wParam, lParam); } ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值