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童鞋说每天都在来 ...
随机推荐
- 关于C++对汉字拼音的处理(2)
对于前面获取字符串汉字全拼音的功能,大家应该有个了解了.现在我又综合广大网友流传的获取字符串汉字拼音首字母的功能进行了整理.介绍如下 这个功能写的稍微有点复杂 使用3个函数解决了获取字符串汉字首拼音串 ...
- Sql server 浅谈用户定义表类型
1.1 简介 SQL Server 中,用户定义表类型是指用户所定义的表示表结构定义的类型.您可以使用用户定义表类型为存储过程或函数声明表值参数,或者声明您要在批处理中或在存储过程或函数的主体中使用的 ...
- H5小内容(一)
HTML5目前最新的规范(标准)是2014年10月推出 2005年左右出现HTML5版本(非标准) W3C组织(两个组织定义H5规范) 学习(研究)HTML5是学习未来(将来主流) ...
- javascript笔记之正则表达式
1.在js正则表达式特殊的需要转义的字符有: ^ $ . * + ? = ! : | \ / ( ) [ ] { } 但实际应用中,还要根据实际情况来判断,以上字符可能不需要转义,也可能不止以上字符 ...
- Windows(Vertrigo)下Apache与Tomcat的整合
为了实现整合,上网找了很多资料!尝试了很多次,终于成功整合了!下面我就把整合过程分享给大家,希望能给以后有需要的人提供帮助. 准备工作: 1.VertrigoServ 2.23 下载地址: http ...
- nodejs中间层现实
初次接触nodejs,是一种非常神奇的东西,未来必火起来.个人觉得最大优势npm命令. 闲话少说,直入主题.这是一个博客项目,php最为服务端,提供数据给node:nodejs+express作为中间 ...
- sql join 用法
SQL JOIN 的用法 关于sql语句中的连接(join)关键字,是较为常用而又不太容易理解的关键字,下面这个例子给出了一个简单的解释 --建表table1,table2:create tabl ...
- Python 学习笔记(1) - 开始
找一个能看的教程(不用太过于纠结以至于耗费大量时间,很可能还没开始就放弃了. -- 这条要作为新的做事准则放入我的日常了,警惕一开始就追求完美常常会什么也得不到.) 我喜欢看书不爱视频,所以找了这个: ...
- xe6+firedac连接sybase
一.Win7 X64系统安装sybase odbc: 1. 下载对应包至c:\system_odbc(文件夹名自己取,在后面注册表内容需要用到): 2. 将值信息写入到注册表内: Windows ...
- STM32固件库
一.STM32固件库开发和传统寄存器开发方式的区别 二.CMSIS标准 CMSIS标准--Cortex Microcontroller Software Interface Standard,是ARM ...