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童鞋说每天都在来 ...
随机推荐
- (转 部分修改) IOS 手势密码(简单版)
// // Created by wangtouwang on 15/4/7. // Copyright (c) 2015年 wangtouwang. All rights reserved. // ...
- HeadFirst设计模式
oo基础 抽象 封装 多态 继承 oo原则 封装变化 多用组合,少用继承 针对接口编程,不针对实现编程(策略模式) 为交互对象之间的松耦合设计而努力(观察者模式) 对扩展开放,对修改关闭(装饰者模式) ...
- Thrift 应用场景(收集版)
官网: http://thrift.apache.org/ 一些介绍使用的文章: http://www.ibm.com/developerworks/cn/java/j-lo-apachethrift ...
- CentOS 5.4 制作 Python 2.6 RPM 包的方法
不知道什么原因,CentOS 5.4 了,默认的Python的版本还是2.4的. 但是Python在CentOS里面的又非常的重要,可是 2.4版本的Python有很多的模块没有,最新的Python ...
- ubuntu基本使用
sudo nautilus xxx指定目录去打开 这个命令就是以root权限打开一个窗口,来管理文件
- ubuntu14.04+opencv 3.0+python2.7安装及测试
本文记录了ubuntu下使用源码手动安装opencv的过程.步骤来自opencv官网 此外记录了在python中安装及载入opencv的方法. 1.安装opencv所需的库(编译器.必须库.可选库) ...
- void void*
void类型及void指针 1.概述 许多初学者对C/C 语言中的void及void指针类型不甚理解,因此在使用上出现了一些错误.本文将对void关键字的深刻含义进行解说,并 详述void及void指 ...
- php文件锁解决少量并发问题
阻塞(等待)模式: <?php $fp = fopen("lock.txt", "r"); if(flock($fp,LOCK_EX)) { //..处理 ...
- javascript获取url参数的方法
发布:thatboy 来源:Net [大 中 小] 本文介绍下,在javascript中取得url中某一个参数的方法,这里分享一个小例子,供大家学习参考下.本文转自:http://www. ...
- Homebrew安装php5及composer for mac教程
安装brew 可以查看教程:mac os x 10.9.1 安装 Homebrew软件包管理工具及brew安装maven3.1.1 首先更新下brew软件库 brew update brew tap ...