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文件
三.流程
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 | #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); } |
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
· 浏览器原生「磁吸」效果!Anchor Positioning 锚点定位神器解析
· 没有源码,如何修改代码逻辑?
· 分享4款.NET开源、免费、实用的商城系统
· 全程不用写代码,我用AI程序员写了一个飞机大战
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了
· 上周热点回顾(2.24-3.2)