鱼C论坛

 找回密码
 立即注册

恒信网络科技

https://fishc.com.cn/?210680

Windows API一日一练(5)ShowWindow与UpdateWindow函数

已有 1098 次阅读2014-4-15 16:20 |个人分类:vc++学习

ShowWindowAPI函数是显示窗口,但它在第一次调用和以后的调用是有区别的。第一次调用时,它的输入参数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是显示当前窗口,但窗口是最小化或最大化时会恢复窗口为原来的大小和位置。
 
UpdateWindow函数是更新窗口的客户区,主要通过发送WM_PAINT消息来实现的。
 
函数声明如下:
WINUSERAPI
BOOL
WINAPI
UpdateWindow(
    __in HWND hWnd);
hWnd是要更新窗口客户区的窗口句柄。
调用这个函数的实例如下:
// First.cpp : Defines the entry point for the application.
//
#include "stdafx.h"
HINSTANCE hinst;
char szTitle[] = "这是一个测试窗口";
char szWindowClass[] = "szClassName";
int APIENTRY WinMain(HINSTANCE hInstance,
                     HINSTANCE hPrevInstance,
                     LPSTR     lpCmdLine,
                     int       nCmdShow)
{
  // TODO: Place code here.
 
 return 0;
}
BOOL InitInstance(HINSTANCE hInstance, int nCmdShow)
{
 hinst = hInstance;             //// 保存实例句柄到全局变量里
 HWND hWnd;
 
 
 hWnd = CreateWindow(szWindowClass,   // szWindowClass是窗口注册名称
      szTitle,    // 窗口显示的标题
      WS_OVERLAPPEDWINDOW, // 窗口显示类型
      CW_USEDEFAULT,   // 缺省的左上角坐标
      CW_USEDEFAULT,   // 窗口左上角坐标,由于X坐标设置为缺省的坐标了
      CW_USEDEFAULT,   // 设置窗口的宽度。使用缺省值
      CW_USEDEFAULT,   // 设置窗口的高度
      NULL,     // 父窗口设置为无
      NULL,     // 主菜单设置为无
      hInstance,    // 窗口当前实例句柄
      NULL);     // 传递给窗口的自定义参数
 if (!hWnd)
 {
  return FALSE;
 }
 
 ShowWindow(hWnd,nCmdShow);
 UpdateWindow(hWnd);    //调用UpdateWindow函数来更新窗口的客户区
 //显示窗口测试
 MessageBox(NULL,_T("最大化"),_T("测试"),MB_OK);
  //显示窗口为最大化
 ShowWindow(hWnd, SW_SHOWMAXIMIZED);
 
 MessageBox(NULL,_T("原来位置"),_T("测试"),MB_OK);
 //显示窗口为原来位置
 ShowWindow(hWnd, SW_SHOWNORMAL);
 return TRUE;
}
创建窗口成功后就返回一个TURE值
一般创建窗口之后都需要调用UpdateWindow函数来更新窗口客户区的显示,否则是乱糟糟

路过

雷人

握手

鲜花

鸡蛋

评论 (0 个评论)

facelist

您需要登录后才可以评论 登录 | 立即注册

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2025-7-5 08:45

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

返回顶部