2D游戏编程4—Windows事件
windows消息传来的参数分解:
Message: WM_ACTIVATE
Parameterization:
fActive = LOWORD(wParam); // activation flag
fMinimized = (BOOL)HIWORD(wParam); // minimized flag
hwndPrevious = (HWND)lParam; // window handle
The Activation Flags for WM_ACTIVATE
Value
DescriptionWA_CLICKACTIVE
Activated by a mouse click.WA_ACTIVE
The window has been activated by some means other than the mouse, such as the keyboard interface.WA_INACTIVE
The window is being deactivated.
WinProc激活程序消息的处理:
case WM_ACTIVATE:
{
// test if window is being activated
if (LOWORD(wparam)!=WA_INACTIVE)
{
// application is being activated
} // end if
else
{
// application is being deactivated
} // end else} break;
Message: WM_CLOSE
case WM_CLOSE:
{
// display message box
int result = MessageBox(hwnd,
"Are you sure you want to close this application?",
"WM_CLOSE Message Processor",
MB_YESNO | MB_ICONQUESTION);// does the user want to close?
if (result == IDYES)
{
// call default handler
return (DefWindowProc(hwnd, msg, wparam, lparam));
} // end if
else // throw message away
return(0);} break;
Message: WM_SIZE
fwSizeType = wParam; // resizing flag
nWidth = LOWORD(lParam); // width of client area
nHeight = HIWORD(lParam); // height of client area
The fwSizeType flag indicates what kind of resizing just occurred
Value
DescriptionSIZE_MAXHIDE
Message is sent to all pop-up windows when some other window is maximized.SIZE_MAXIMIZED
Window has been maximized.SIZE_MAXSHOW
Message is sent to all pop-up windows when some other window has been restored to its former size.SIZE_MINIMIZED
Window has been minimized.SIZE_RESTORED
Window has been resized, but neither the SIZE_MINIMIZED nor SIZE_MAXIMIZED value applies.
处理代码:
case WM_SIZE:
{
// extract size info
int width = LOWORD(lparam);
int height = HIWORD(lparam);// get a graphics context
hdc = GetDC(hwnd);// set the foreground color to green
SetTextColor(hdc, RGB(0,255,0));// set the background color to black
SetBkColor(hdc, RGB(0,0,0));// set the transparency mode to OPAQUE
SetBkMode(hdc, OPAQUE);// draw the size of the window
sprintf(buffer,
"WM_SIZE Called - New Size = (%d,%d)", width, height);
TextOut(hdc, 0,0, buffer, strlen(buffer));// release the dc back
ReleaseDC(hwnd, hdc);} break;
Message: WM_MOVE
case WM_MOVE:
{
// extract the position
int xpos = LOWORD(lparam);
int ypos = HIWORD(lparam);// get a graphics context
hdc = GetDC(hwnd);// set the foreground color to green
SetTextColor(hdc, RGB(0,255,0));// set the background color to black
SetBkColor(hdc, RGB(0,0,0));// set the transparency mode to OPAQUE
SetBkMode(hdc, OPAQUE);// draw the size of the window
sprintf(buffer,
"WM_MOVE Called - New Position = (%d,%d)", xpos, ypos);
TextOut(hdc, 0,0, buffer, strlen(buffer));
// release the dc back
ReleaseDC(hwnd, hdc);} break;
2D游戏编程4—Windows事件的更多相关文章
- 2D游戏编程6—windows程序模板
// INCLUDES /////////////////////////////////////////////// #define WIN32_LEAN_AND_MEAN // just say ...
- windows游戏编程了解消息事件模型
本系列文章由jadeshu编写,转载请注明出处.http://blog.csdn.net/jadeshu/article/details/22309265 作者:jadeshu 邮箱: jades ...
- 2D游戏编程2--windows高级编程
windows应用程序布局 编译流程 响应菜单事件消息 菜单消息处理实例: LRESULT CALLBACK WindowProc(HWND hwnd, UINT msg, WPARAM wpar ...
- 2D游戏编程1--windows编程模型
一.创建一个windows程序步骤 1.创建一个windows类 2.创建一个事件处理程序 3.注册windows类 4.用之前创建的windows类创建一个窗口 5.创建一个主事件循环 二.存储 ...
- 2D游戏编程7—星空案例
// INCLUDES /////////////////////////////////////////////// #define WIN32_LEAN_AND_MEAN // just say ...
- 2D游戏编程5—锁定频率
核心利用win心跳函数GetTickCount利用差量锁定fps,如下代码锁定30fps,缺点为如果计算机不能以30fps运行,程序将低于30fps #define WIN32_LEAN_AND_ME ...
- 2D游戏编程3—GDI
WM_PAINT消息触发程序重新绘制界面,过程如下: PAINTSTRUCT ps; // used in WM_PAINT HDC hdc; // handle to ...
- 3D游戏编程大师技巧──2D引擎的编译问题
接上一篇文章,这里将介绍2D引擎的编译,从现在开始才真正进入<3D游戏编程大师技巧>的学习.本书的第一.二章只是简介了游戏编程和windows编程,从第三章开始才是介绍<window ...
- Windows游戏编程之从零开始d
Windows游戏编程之从零开始d I'm back~~恩,几个月不见,大家还好吗? 这段时间真的好多童鞋在博客里留言说或者发邮件说浅墨你回来继续更新博客吧. woxiangnifrr童鞋说每天都在来 ...
随机推荐
- tomcat server.xml配置文件 解析
把服务拆分出来了. 前几天我也进行了拆分.可是当时服务起不来所以我想会不会有什么设置,使得这个服务在主机中只能启一个.然后我又找了一台服务器,也把代码放了进去.结果仿佛是我料想到的样子, ...
- 配置apache+trac环境
按照trac官网上的配置始终通不过.仔细看了,原来我们使用的apache版本是2.4的,在2.4中有些directive已经变了. 例如:原来的 Allow from all 现在变成了 Requir ...
- Linux Shell脚本之自动修改IP
作为一名Linux SA,日常运维中很多地方都会用到脚本,而服务器的ip一般采用静态ip或者MAC绑定,当然后者比较操作起来相对繁琐,而前者我们可以设置主机名.ip信息.网关等配置.修改成特定的主机名 ...
- make makefile
Gcc的编译流程预处理阶段: gcc –E hello.c –o hello.i编译阶段: gcc –S hello.i –o hello.s汇编阶段:gcc –c hello.s –o hello. ...
- rgba兼容IE系列
在容器里面如果用到opacity或者filter:opacity里面的内容也会被滤镜化 如果不想里面的内容也被滤镜化我们可以用rgba来处理或者用透明的背景图片. 兼容ie的rgba的写法 backg ...
- MySQL中EXPLAIN解释命令详解
MySQL中的explain命令显示了mysql如何使用索引来处理select语句以及连接表.explain显示的信息可以帮助选择更好的索引和写出更优化的查询语句. 1.EXPLAIN的使用方法:在s ...
- CI的面向切面的普通权限验证
第一步:开启CI的钩子配置,此次不多说看CI手册即可. 第二步:在cofig/hooks.php中进行钩子配置,CI手册中有记载 <?php defined('BASEPATH') OR exi ...
- Computer Talker with C# z
Using the Code Add a textbox named 'txtWords' to a form. Add a button named 'btnSpeak' to a form. Ad ...
- STM32与S3C2440的区别
一.定位 STM32: 高功能单片机.工业控制 S3C2440: 处理器.智能设备 二.跑系统 STM32: ucos-II S3C2440: Linux等大型系统 三.硬件架构 STM32: C ...
- load-store/register-memory/register-plus-memory比较
在理解ARM的load-store架构时,我在百度上搜索了很长时间,但是始终找不到一篇像样的中文文章.最后,在用谷歌搜索的英文网站上终于找到了一些蛛丝马迹.让我们先看一下一篇英文资料. Process ...
