WindowsAPI 窗口(1)

WndProc是窗口过程
LRESULT CALLBACK WndProc (HWND, UNIT, WPARM, LPARAM);
UNIT是unsigned int类型,LRESULT等价于LONG
WndProc函数类型为CALLBACK
WINAPI WinMain (HINSTANCE hInstance, HINSTANCE PrevInstance, PSTR szCmdline, int iCmdshow)
PSTR表示一个指向非宽字符串的指针

四种数据结构
MSG 消息结构
WNDCLASS 窗口类结构
PAINTSTRUCT 绘制结构
RECT 矩形结构

三种大写标识符
HINSTANCE 实例句柄——程序本身
HWND 窗口句柄
HDC 设备环境句柄

创建应用程序前,必须调用函数RegisterClass来注册窗口类。需要指向WNDCLASS类型的结构的指针

窗口类的内容:
wndclass.style = CS_VREDRAW | CS_HREDRAW
指定无论何时窗口的水平尺寸(HREDRAW)和垂直尺寸(VERDRAW)被改变,所有基于该窗口类的窗口都要重新绘制;

wndclass.lpfnWndProc = WndProc
将该窗口过程设置为WndPro函数

wndclass.cbClsExtra = 0;
wndclass.cbWndExtra = 0;
在类结构和Windows内部维护的窗口结构中预留一些额外的空间;

winclass.hInstance = hInstance;
表示应用程序是一个实例句柄;

wndclass.hIon = LoadIcon (NULL, IDI_APPLICATION);
为所有基于该窗口类的窗口设定一个图标,
为了获得预定义图标的句柄,需要函数LoadIcon,并将函数的第一个参数设为NULL。而从保存在磁盘的应用程序的可执行文件中加载自定义图标时,该参数必须设为hInstance,即相应程序的实例句柄。第二个参数用于标识该图标。对预定义图标来说,该参数是一个前缀为IDI的标识符,IDI表示“图标的标识符”(ID for an icon)

wndclass.hCursor = LoadhCursor (NULL, IDC_ARROW)
LoadCursor函数载入一个预定义的鼠标指针(成为IDC_ARROW),该句柄用来设定WNDCLASS结构的hCursor字段。当鼠标指针出现在这类窗口的客户区内时,将变成一个小箭头。

windlass.hbrBackground = GetStockObject (WHITE_BRUSH);
字段名hbrBackground的前缀hbr表示“画刷的句柄”,
意味着客户区背景被填充胃白色;

wndclass.lpszMenuName = NULL;
指定了窗口类的菜单。此处设定为NULL,因为不带菜单。

wndclass.lpszClassName = szAppName;
为窗口类赋予了一个名称,如保存在szAppName中的”…”;

当WNDCLASS结构的所有10个字段全部初始化后,程序将会调用RegisterClass来完成该窗口类的注册。唯一参数是指向WNDCLASS类型的指针。实际上,存在两种注册窗口类的函数

  1. RegisterClassA
  2. RegisterClassW
    参数分别是指向WNDCLASSA和WNDCLASSW的指针,程序利用哪个函数注册窗口类,决定传给窗口的消息是ASCII还是UNICODE类型的。

窗口的创建
hwnd = CreatWindow ( szAppName, //窗口类名称
TEXT (“The Hello Program”), //窗口标题
WS_OVERAPPEDWINDOW, //窗口风格
CW_USEDEFAULT, //初始化x坐标
CW_USEDEFAULT, //初始化y坐标
CW_USEDEFAULT, //初始化x方向
CW_USEDEFAULT, //初始化y方向
NULL, //父窗口句柄
NULL, //窗口菜单句柄
hInstance , //程序实例句柄
NULL); //创建参数

要将窗口显示在屏幕上,还需要另外调用两个函数
ShowWIndow (hwnd, iCmdShow);
该函数第一个参数是指向CreateWindow创建的窗口的句柄。第二个参数是WinMain函数所接受的iCmdShow值。该参数决定窗口在屏幕中的初始显示形式,即正常显示,还是最小化或最大化窗口。
正常显示 SW_SHOWNORMAL
最大化显示 SW_SHOWMAXIMIZED
显示在任务栏 SW_SHOWMINNOACTIVE

UpdateWindow(hwnd);

发布了47 篇原创文章 · 获赞 10 · 访问量 1738

猜你喜欢

转载自blog.csdn.net/Antonio_Salieri/article/details/97963111
今日推荐