Windows开发:WinSDK初始化
一.简介

二.编译流程
对话框编辑器(Dialog Editor)->.DLG文件->集合成.RC文件
图片编辑器(Image Editor)->.BMP/.ICO/.CUR文件->集合成.RC文件
字体编辑器(Font Editor)->.FON文件->集合成.RC文件
.RC文件通过资源编译器(RC Compiler)->.RES文件->链接(LINKER)
头文件(.h)+源文件(.c)->通过C语言编译器(C Compiler)->.OBJ文件+动态库(.LIB/C runtime/DLL Import)->链接器(LINKER)
链接器最终生成.EXE文件
三.流程
#include <windows.h>
//1.声明回调函数
LONG WINAPI WndProc(HWND,UINT,WPARAM,LPARAM);
int WINAPI WinMain(HINSTANCE hInstance,HINSTANCE hPrevInstance,LPSTR lpszCmdLine,int nCmdShow){
//2.填充窗口类
WNDCLASS wc;
HWND hwnd;
MSG msg;
wc.style=0; //Class Style
wc.lpfnWndProc=(WNDPROC)WndProc; //Window procedure address
wc.cbClsExtra=0; //Class extra bytes
wc.cbWndExtra=0; //Window extra bytes
wc.hInstance=hInstance; //Instance handle
wc.hIcon=LoadIcon(NULL,IDC_ARROW); //Icon handle
wc.hCursor=LoadCursor(NULL,IDC_ARROW); //Cursor handle
wc.hbrBackground=(HBRUSH)(COLOR_WINDOW+1); //Background handle
wc.lpszMenuName=NULL; //Menu name
wc.lpszClassName="MyWndClass"; //WNDCLASS name
//3.注册窗口类
RegisterClass(&wc);
//4.创建窗口
hwnd=CreateWindow(
"MyWndClass", //WNDCLASS name
"SDK Application", //Window title
WS_OVERLAPPEDWINDOW, //Window style
CW_USEDEFAULT, //Horizontal position
CW_USEDEFAULT, //Vertical position
CW_USEDEFAULT, //Initial width
CW_USEDEFAULT, //Initial height
HWND_DESKTOP, //Handle of parent window
NULL, //Menu handle
hInstance, //Application's instance handle
NULL //Window-creation data
);
//5.显示更新窗口
ShowWindow(hwnd,nCmdShow);
UpdateWindow(hwnd);
//6.消息循环
while(GetMessage(&msg,NULL,0,0)){
TranlateMessage(&msg);
DispatchMessage(&msg);
}
return msg.wParam;
}
//7.实现回调函数处理消息
LPRESULT CALLBACK WndProc(HWND hwnd,UINT message,WPARAM wParam,LPARAM lParam){
PAINTSTRUCT ps;
HDC hdc;
switch(message){
case WM_PAINT:
hdc=BeginPaint(hwnd,&ps);
Ellipse(hdc,0,0,200,100);
EndPaint(hwnd,&ps);
return 0;
case WM_DESTROY:
PostQuitMessage(0);
return 0;
}
return DefWindowProc(hwnd,message,wParam,lParam);
}

浙公网安备 33010602011771号