窗口程序你的第一个Windows程序
PS:今天上午,非常郁闷,有很多简单基础的问题搞得我有些迷茫,哎,代码几天不写就忘。目前又不当COO,还是得用心记代码哦!
你的第一个Windows程序
在这个模块,我们编写一个最小的Windows程序。它的作用是创立并示显一个空白窗口。这第一个程序含包大约50行代码,不盘算空白行和注释。这将是我们的出发点;当前还会添加图形,文本,用户输入和其它功能。
示例程序屏幕截图
上面是完全的程序代码:
#ifndef UNICODE #define UNICODE #endif #include <windows.h> LRESULT CALLBACK WindowProc(HWND hwnd,UINT uMsg, WPARAM wParam,LPARAM lParam); int wWinMain(HINSTANCE hInstance,HINSTANCE,PWSTR pCmdLine,int nCmdShow) { //册注窗口类 const wchar_t CLASS_NAME[]=L"Sample Window Class"; WNDCLASS wc = {}; wc.lpfnWndProc =WindowProc; wc.hInstance =hInstance; wc.lpszClassName =CLASS_NAME; RegisterClass(&wc); //创立窗口 HWND hwnd = CreateWindowEx( 0, //可选窗口式样 CLASS_NAME, //窗口类 L"Learn to Program Windows", //窗口文本 WS_OVERLAPPEDWINDOW, //窗口式样 //窗口大小和定位 CW_USEDEFAULT,CW_USEDEFAULT,CW_USEDEFAULT,CW_USEDEFAULT, NULL, //父窗口 NULL, //菜单 hInstance, //例实柄句 NULL //其它应用程序的据数 ); if(hwnd == NULL) { return 0; } ShowWindow(hwnd,nCmdShow); //运行息消循环 MSG msg = {}; while(GetMessage(&msg,NULL,0,0)) { TranslateMessage(&msg); DispatchMessage(&msg); } return 0; } LRESULT CALLBACK WindowProc(HWND hwnd,UINT uMsg, WPARAM wParam,LPARAM lParam) { switch(uMsg) { case WM_DESTROY: PostQuitMessage(0); return 0; case WM_PAINT: PAINTSTRUCT ps; HDC hdc = BeginPaint(hwnd,&ps); FillRect(hdc,&ps.rcPaint,(HBRUSH)(COLOR_WINDOW+1)); EndPaint(hwnd,&ps); return 0; } return DefWindowProc(hwnd,uMsg,wParam,lParam); }
你可以从Windows Hello World Sample下载完全的Visual Studio项目。
它会给出一个有助帮的要简概述,说明这段代码是做什么的。随后的题主将细详的析分代码。
- wWinMain是程序的口入点,当程序动启,他册注应用程序窗口某些行为的信息。其中最主要的信息是一个数函的址地,在这个例子中是WindowProc,这个数函定义窗口的行为——它的表面,如何与用户交互等等。
- 下一步,程序创立窗口和接收这个窗口一唯标识的柄句。
- 如果这个窗口顺遂地创立,程序进入while循环,程序持保循环,直到程序关闭窗口并出退应用程序。
请注意程序没有式显地调用WindowProc数函,尽管我们说这是大多数应用程序逻辑的定义。Windows通过一系列的息消与程序信通,While循环内的代码驱动进程。每次程序调用 DispatchMessage 数函,个每息消接间的使Windows调用WindowProc数函。
细详的代码析分后续......
文章结束给大家分享下程序员的一些笑话语录:
小沈阳版程序员~~~ \n程序员其实可痛苦的了......需求一做一改,一个月就过去了;嚎~ \n需求再一改一调,一季度就过去了;嚎~ \n程序员最痛苦的事儿是啥,知道不?就是,程序没做完,需求又改了; \n程序员最最痛苦的事儿是啥,知道不? 就是,系统好不容易做完了,方案全改了; \n程序员最最最痛苦的事儿是啥,知道不? 就是,系统做完了,狗日的客户跑了; \n程序员最最最最最痛苦的事儿是啥,知道不? 就是,狗日的客户又回来了,程序给删没了!