WINDOWS API 创建窗口实例

#include<windows.h> // 包含 windows.h 头文件

LRESULT CALLBACK WndProc(HWND, UINT, WPARAM, LPARAM ); // 窗口函数声明

/* 入口函数 WinMain()*/

int APIENTRY WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine,

int nCmdShow){

WNDCLASS wndclass; // 定义窗口类结构变量

HWND hwnd; // 定义窗口句柄

MSG msg; // 定义消息结构变量

/* 定义窗口类的各属性 */

wndclass.style = CS_HREDRAW|CS_VREDRAW; // 改变窗口大小则重画

wndclass.lpfnWndProc = WndProc; // 窗口函数为 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 = "window 窗口创建 "; // 窗口类名为 window 窗口创建

/* 注册窗口类 */

if(! RegisterClass(&wndclass)) return FALSE;

/* 创建窗口 */

hwnd = CreateWindow("window 窗口创建 ", // 窗口类名 window 窗口创建

"window 窗口创建 ", // 窗口名 window 窗口创建

WS_OVERLAPPEDWINDOW, // 重叠式窗口

CW_USEDEFAULT, CW_USEDEFAULT, // 左上角屏幕坐标默认值

CW_USEDEFAULT, CW_USEDEFAULT, // 窗口宽度和高度默认值

NULL, // 此窗口无父窗口

NULL, // 此窗口无主菜单

hInstance, // 创建此窗口的实例句柄

NULL); // 此窗口无创建参数

/* 显示并更新窗口 */

ShowWindow(hwnd,nCmdShow); // 显示窗口

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){

// 根据消息值转相应的消息处理

switch (message){

case WM_PAINT: // 重画窗口客户区消息处理

HDC hdc; // 定义设备描述表句柄

PAINTSTRUCT ps; // 定义绘图信息结构变量

hdc = BeginPaint (hwnd,&ps); // 获取要重画的窗口的设备描述表句柄

TextOut(hdc,10,20," 哈哈, Windows 编程创建的窗口 !", 28); // 输出文本

EndPaint (hwnd,&ps); // 结束要重画的窗口

return 0;

case WM_DESTROY: // 撤销窗口消息处理

PostQuitMessage (0); // 产生退出程序消息 WM_QUIT

return 0;

}

return DefWindowProc (hwnd, message, wParam, lParam);

// 其他转默认窗口函数

}

你可能感兴趣的:(windows)