首先注册了窗口类,然后创建了一个窗口,创建窗口时指定的窗口的属性和窗口消息的处理函数。函数消息的处理函数大多调用系统默认函数来处理。

 1 #include<windows.h>
 2
 3 /*全局变量*/
 4 HINSTANCE hinst;
 5
 6 /*函数声明*/
 7 int WINAPI WinMain(HINSTANCE,HINSTANCE,LPSTR,int);
 8 LRESULT CALLBACK MainWndProc(HWND,UINT,WPARAM,LPARAM);
 9
10 /*显示一个窗口*/
11 int WinMain(HINSTANCE hInstance,
12             HINSTANCE hPrevInstance,
13             LPSTR lpCmdLine,
14             int nCmdShow
15             )
16 {
17     WNDCLASSEX wcx;//窗口类
18     HWND hwnd;//窗口句柄
19     MSG msg;//消息
20     BOOL fGotMessage;//是否获取消息
21     hinst=hInstance;//应用程序实例句柄,保存为全局变量
22     //填充窗口的数据结构
23     wcx.cbSize=sizeof(wcx);//结构体的大小
24     wcx.style=CS_HREDRAW | CS_VREDRAW;//样式:大小改变时重绘界面
25     wcx.lpfnWndProc=MainWndProc;//消息处理函数
26     wcx.cbClsExtra=0;//不使用类内存
27     wcx.cbWndExtra=0;//不使用窗口内存
28     wcx.hInstance=hInstance;//所属应用程序的实例句柄
29     wcx.hIcon=LoadIcon(NULL,IDI_APPLICATION);//图标:默认
30     wcx.hCursor=LoadCursor(NULL,IDC_ARROW);//光标:默认
31     wcx.hbrBackground=(HBRUSH)GetStockObject(WHITE_BRUSH);//背景:白色
32     wcx.lpszMenuName=NULL;//菜单:不使用
33     wcx.lpszClassName="MainWClass";//窗口类名
34     wcx.hIconSm=(HICON)LoadImage(hInstance,
35         MAKEINTRESOURCE(5),
36         IMAGE_ICON,
37         GetSystemMetrics(SM_CXSMICON),
38         GetSystemMetrics(SM_CYSMICON),
39         LR_DEFAULTCOLOR);
40
41     //注册窗口类
42     if(!RegisterClassEx(&wcx))
43     {
44         MessageBox(NULL,TEXT("注册窗口失败"),NULL,MB_OK);
45         return 1;
46     }
47
48     //创建窗口
49     hwnd=CreateWindow(
50         "MainWClass",//window name
51         "CH 2-3",//window title
52         WS_OVERLAPPEDWINDOW,//窗口样式
53         CW_USEDEFAULT,//水平位置X:默认
54         CW_USEDEFAULT,//水平位置Y:默认
55         CW_USEDEFAULT,//width:默认
56         CW_USEDEFAULT,//high:默认
57         (HWND)NULL,//父窗口:无
58         (HMENU)NULL,//菜单:使用窗口类的菜单
59         hInstance,//应用程序实例句柄
60         (LPVOID)NULL);//窗口创建时数据:无
61
62     if(!hwnd)
63     {
64         MessageBox(NULL,TEXT("创建窗口失败"),NULL,MB_OK);
65         return 1;
66     }
67     //显示窗口
68     ShowWindow(hwnd,nCmdShow);
69     UpdateWindow(hwnd);
70     //消息循环
71     while((fGotMessage=GetMessage(&msg,(HWND)NULL,0,0))!=0 && fGotMessage!=-1)
72     {
73         TranslateMessage(&msg);
74         DispatchMessage(&msg);
75     }
76     return msg.wParam;
77 }
78 /*MainWndProc****************************
79 *消息处理函数
80 *对所有消息采取默认处理函数
81 *****************************************/
82 LRESULT CALLBACK MainWndProc(HWND hwnd,
83                              UINT uMsg,
84                              WPARAM wParam,
85                              LPARAM lParam
86                              )
87 {
88     switch(uMsg)
89     {
90     case WM_DESTROY:
91         ExitThread(0);
92         return 0;
93     default:
94         return DefWindowProc(hwnd,uMsg,wParam,lParam);
95     }
96 }
本文转自beautifulzzzz博客园博客,原文链接:http://www.cnblogs.com/zjutlitao/p/3583720.html,如需转载请自行联系原作者

[WinAPI] API 4 [注册][创建][消息][第一个框架类窗口]相关推荐

  1. Windows API 编程起始——创建一个窗口

    最初了解Windows api编程呢,就是先创建出一个最简洁的窗口,就如我们学习C/C++时的"Helloword"一样,这是进入windows编程大门的重要一个步,下面就开始吧. ...

  2. WinAPI入门: 第一个标准Win32窗口程序 [改进详细注释版]

    WinAPI入门: 第一个标准Win32窗口程序 下载链接: 若想立即看到本程序的运行结果,可点击EXE文件的免费下载链接; HelloWin_v1.sfx.exe;–带语音和背景音乐; 相关链接: ...

  3. 使用 ChatGPT API 和节点创建 CLI 聊天机器人.js

    ChatGPT风靡全球,本周,OpenAI发布了ChatGPT API.我花了一些时间在浏览器中使用 ChatGPT,但真正适应这些新功能的最好方法是尝试使用它构建一些东西.有了可用的 API,现在是 ...

  4. RTX5 | 消息队列01 - 创建消息队列

    文章目录 一.前言 二.实验的目的 三.API 3.1.osMessageQueueId_t 3.2.osMessageQueueAttr_t 3.3.osMessageQueueNew 四.代码 4 ...

  5. 应用程序进程(三):创建消息循环

    1.在ActivityThread的main方法中开启主线程的消息循环 在其它线程中创建Looper可使用 Looper.prepare()方法 //ActivityThread#main publi ...

  6. Web API 2 入门——创建ASP.NET Web API的帮助页面(谷歌翻译)

    在这篇文章中 创建API帮助页面 将帮助页面添加到现有项目 添加API文档 在敞篷下 下一步 作者:Mike Wasson 创建Web API时,创建帮助页面通常很有用,以便其他开发人员知道如何调用A ...

  7. 创建自己第一个安卓程序_从一天创建和发布我的第一个应用程序中学到的东西...

    创建自己第一个安卓程序 by Sarvasv Kulpati 由Sarvasv Kulpati 从一天创建和发布我的第一个应用程序中学到的东西 (What I learned from creatin ...

  8. SIP注册信令消息示范及解释

    注册信令消息示范: 1.1 REGISTER sip:SIP服务器编码@目的域名或IP地址端口SIP/2.0 Via: SIP/2.0/UDP 源域名或IP地址端口 From: <sip:SIP ...

  9. pyqt5+qt desiger实例教程(1)创建含有三个按钮的窗口,点击按钮2输出消息、按钮3可退出

    pyqt5+qt desiger实例教程(1)创建含有三个按钮的窗口,点击按钮三可退出 目标:设计一个含有三个按钮的窗口,点击按钮2弹出消息,点击按钮3退出 如果是使用的anacoda那么自带qtde ...

最新文章

  1. this.options[selectedIndex]的使用
  2. Tips-Windows 10【多桌面视窗】操作
  3. 疯狂ios讲义之网页控件(UIWebView)
  4. SAP BSP - how to access javascript file via Mime API
  5. functor_纯Java中的Functor和Monad示例
  6. Android studio Github 断开连接
  7. Spring Boot基础学习笔记15:实现文件下载功能
  8. Flutter代码锦囊---摇一摇
  9. 4. ubuntu php composer
  10. socket 和 TCP/IP 协议的关系
  11. js foreach用法_36 个JS 面试题为你助力金九银十(面试必读)
  12. 5G聚合路由器有哪些优势?能应用在哪些场景?
  13. 实验二 (一) 大小写英文字母表
  14. 《猎头局中局》——摘要
  15. 华为防火墙双机热备-HRP
  16. MCS:离散随机变量——Poisson分布
  17. 中山西路620号 的人才服务中心搬到 梅园路77号去了
  18. 一犯人在执行死刑前三天供出祖传治癌奇方
  19. 导出excel表格并返回给前端的快捷用法(上)
  20. python输入百分制成绩输出成绩等级_switch实现成绩打等级

热门文章

  1. jsp 中的js 与 jstl 运行的先后顺序
  2. 分析周鸿祎的安全卫士360[转]
  3. Struts2 interceptor使用经验小结
  4. 深入浅出HTTPS基本原理
  5. 1、在Centos上安装Grafana
  6. 【Node.js】2.开发Node.js选择哪个IDE 开发工具呢
  7. 详解ABBYY FineReader 12扫描亮度设置
  8. 手把手教你看懂并理解Arduino PID控制库——调参改变
  9. CCBPM工作流引擎的消息机制与设计
  10. 你也可以玩转Skype -- 基于Skype API开发外壳程序入门