Windows程序是事件驱动的,对于一个窗口,它的大部分例行维护是由系统维护的。没个窗口都有一个消息处理函数。在消息处理函数中,对传入的消息进行处理。系统内还有它自己的缺省消息处理函数。

客户写一个消息处理函数,在窗口建立前,将消息处理函数与窗口关联。这样,每当有消息产生时,就会去调用这个消息处理函数。通常情况下,客户都不会处理全部的消息,而是只处理自己感兴趣的消息,其他的,则送回到系统的缺省消息处理函数中去。

系统会将针对这个程序的消息依次放到程序的“消息队列”中,由程序自己依次取出消息,在分发到对应的窗口中去。
因此,建立窗口后,将进入一个循环。
在循环中,取出消息、派发消息,循环往复,直到取得的消息是退出消息。
循环退出后,程序即结束。 #include "stdafx.h"
#include <windows.h>

//一、消息处理函数
//参数:窗口句柄,消息,消息参数,消息参数
LRESULT CALLBACK WndProc(HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam)
{
//处理感兴趣的消息
switch (message)
{
case WM_DESTROY:
//当用户关闭窗口,窗口销毁,程序需结束,发退出消息,以退出消息循环
PostQuitMessage (0) ;
return 0 ;
}
//其他消息交给由系统提供的缺省处理函数
return ::DefWindowProc (hwnd, message, wParam, lParam) ;
}

//二、应用程序主函数
//参数:实例句柄、前一个实例的句柄、命令行参数、窗口显示方式
int WINAPI WinMain (HINSTANCE hInstance, HINSTANCE hPrevInstance,
                    PSTR szCmdLine, int iCmdShow)
{
//1.注册窗口类
static TCHAR szAppName[] = TEXT ("HelloWin") ; //窗口类名称
//定制"窗口类"结构
WNDCLASS     wndclass ;
wndclass.style         = CS_HREDRAW | CS_VREDRAW ;
wndclass.lpfnWndProc   = 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 = szAppName; //类名称
//注册
if (!RegisterClass (&wndclass))
{
MessageBox (NULL, TEXT ("RegisterClass Fail!"), 
szAppName, MB_ICONERROR) ;
return 0 ;
}

//建立窗口
HWND hwnd ;
hwnd = CreateWindow (szAppName, //窗口类名称
TEXT ("The Hello Program"), //窗口标题 
WS_OVERLAPPEDWINDOW, //窗口风格
CW_USEDEFAULT,
CW_USEDEFAULT,
CW_USEDEFAULT,
CW_USEDEFAULT,
NULL,
NULL,
hInstance, //实例句柄
NULL);

ShowWindow (hwnd, iCmdShow) ;
UpdateWindow (hwnd) ;

//消息循环
MSG          msg ;
while (GetMessage (&msg, NULL, 0, 0)) //从消息队列中取消息 
{
TranslateMessage (&msg) ; //转换消息
DispatchMessage (&msg) ; //派发消息
}
return msg.wParam ;

}

WIN32开发之LRESULT CALLBACK WndProc(HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam)相关推荐

  1. 消息处理函数LRESULT CALLBACK WndProc(HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam)

    Windows程序是事件驱动的,对于一个窗口,它的大部分例行维护是由系统维护的.没个窗口都有一个消息处理函数.在消息处理函数中,对传入的消息进行处理.系统内还有它自己的缺省消息处理函数. 客户写一个消 ...

  2. Win32开发之Format MessageBox 详解

    本文介绍在Windows程序开发中的MessageBox详解.   我们在在Windows程序设计中经常会涉及到一个格式化消息框,其代码如下: #include <windows.h> # ...

  3. WIN32开发之Unicode字符集下cstring转换为char[]相互转换

    1.CString转char[] CString SeveName:// char ch[100]; memcpy(a, SeveName, SeveName.GetLength() * 2); fo ...

  4. DirectX游戏开发之3D角色动起(下)

    DirectX游戏开发之3D角色动起(下) 直接先上图吧! 动作idle 动作attack 动作walk 动作run 看,多动作的模型搞下来了.原则上只要在此基础上略做修改就可以实现3d游戏的基本制作 ...

  5. DirectX游戏开发之2D文字的实现

    DirectX游戏开发之2D文字的实现 文字是承载信息最有效的载体之一,各种游戏程序都离不开文字的显示.对于3D文字来说,2D文字有其渲染的高效性和实现的简洁性. 2D文字的显示无论在写2D游戏还是在 ...

  6. WINDOWS API ——SETWINDOWLONG—— 设置窗口样式 SetWindowLong 函数原型为:LONG SetWindowLong(HWND hwnd,int nIndex,Lon

    WINDOWS API --SETWINDOWLONG-- 设置窗口样式 SetWindowLong 函数原型为:LONG SetWindowLong(HWND hwnd,int nIndex,Lon ...

  7. 李洪强iOS开发之RunLoop的原理和核心机制

    李洪强iOS开发之RunLoop的原理和核心机制 搞iOS之后一直没有深入研究过RunLoop,非常的惭愧.刚好前一阵子负责性能优化项目,需要利用RunLoop做性能优化和性能检测,趁着这个机会深入研 ...

  8. pythonfor循环案例教程_python开发之for循环操作实例详解,pythonfor实例详解

    python开发之for循环操作实例详解,pythonfor实例详解 本文实例讲述了python开发之for循环操作.分享给大家供大家参考,具体如下: 下面是我做的一些学习记录供大家参考: #基本的f ...

  9. Android 开发之旅:深入分析布局文件又是“Hello World!”

    引言 上篇可以说是一个分水岭,它标志着我们从Android应用程序理论进入实践,我们拿起手术刀对默认的"Hello World!"程序进行了3个手术,我们清楚了"Hell ...

最新文章

  1. python【数据结构与算法】二分归并模版
  2. php对称字符串,PHP实现简单的对称加密和解密方法 - str_split
  3. python秒数转化为时间用户jianpang_Python中文转为拼音
  4. 数据结构——维基百科
  5. 直接运行内存中的代码
  6. Fiori Elements里General Information的设计原理
  7. mysql coreseek_centos+php+coreseek+sphinx+mysql之一coreseek安装篇
  8. python去除特殊字符_python去除BOM头\ufeff等特殊字符
  9. Poisson方程五点差分格式例题及解答
  10. android最简单的更换主题,教你更换Android手机主题
  11. nutch batchid
  12. Reverse Linked List(非递归解法)
  13. 巴斯勒相机的ip掩码_相机IP和带宽设置
  14. 蓝牙连接手表后微信语音来电不响铃
  15. 动手学深度学习:3.16 实战Kaggle比赛:房价预测
  16. 用户价值VS商业价值
  17. mysql sql stuff函数_数据库SQLServer Stuff函数用法
  18. php做引流脚本,引流脚本效果极速引流脚本分享
  19. Flink常见的面试题
  20. 物联网发展真正的瓶颈是什么?

热门文章

  1. 医院信息化及计算机知识,医疗行业信息化相关知识
  2. 【渝粤教育】广东开放大学 互换性原理 形成性考核 (29)
  3. 计算机配置动态硬盘,如何把硬盘的类型从动态变成基本?
  4. 贸易顺差与人民币升值的关系
  5. CentOS7 NGROK服务器搭建 无需域名
  6. 如何理解机器学习和统计中的AUC?
  7. cca matlab代码,CCA的matlab小实验
  8. 移动端真机调试--weinre
  9. EasyNVR如何实现前端录像时间轴播放?
  10. 【嵌入式】流水灯程序