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++模板学习随笔
本文学习内容参考:http://www.cnblogs.com/gw811/archive/2012/10/25/2738929.html C++模板 1.模板分为函数模板和类模板两种类型 函数模板针 ...
- MySQL的基本使用
SQL DDL:数据定义语言 CREATE DROP ALTER DML:数据操作语言 SELECT INSERT UPDATE DELETE DCL:数据控制语言 GR ...
- python3实现的web端json通信协议
之前有用python3实现过tcp协议的,后来又实现了http协议的通信,今天公司想做一个功能自动测试系统, 下午弄了一会,发现json格式的实现可以更简单一点,代码如下:简单解说一下,一般与服务器通 ...
- [python] virtualenv下解决matplotlib中文乱码
1. 安装中文字体 一般系统自带wqy-microhei,其ttc文件位于/usr/share/fonts/truetype/wqy/wqy-microhei.ttc 2. 将ttc文件复制到pyth ...
- absolute之实现居中的三种方式
居中思想可以由很多方式实现,这篇文章采用absolute实现:由传统方式开始到absolute独立使用方式 方式一:传统方式,父容器relateive,子元素absolute,然后left:50%,再 ...
- 修改phpmyadmin上传文件大小限制
当你想将SQL语句,导入phpmyadmin 时,发现自己的sql语句文本大小 大于 phpmyadmin的课上传的文本大小. 默认phpmyadmin上传文件大小为2M,如果想要phpmyadmin ...
- 如何在Win10中启用和关闭管理员账户?
和Win7/Win8.1一样,Win10的管理员账户Administrator是默认隐藏和关闭的,因为该账户权限极高,被不法分子利用后存在极大风险.但如果你想在某些特殊情况下使用该账户,就需要手动将其 ...
- POJ 3258 River Hopscotch 二分枚举
题目:http://poj.org/problem?id=3258 又A一道,睡觉去了.. #include <stdio.h> #include <algorithm> ]; ...
- UIStackView 简单使用
UIStackView提供了一个高效的接口用于平铺一行或一列的视图组合.对于嵌入到StackView的视图,你不用再添加自动布局的约束了.Stack View管理这些子视图的布局,并帮你自动布局约束. ...
- Java多线程初学者指南(8):从线程返回数据的两种方法
从线程中返回数据和向线程传递数据类似.也可以通过类成员以及回调函数来返回数据.但类成员在返回数据和传递数据时有一些区别,下面让我们来看看它们区别在哪. 一.通过类变量和方法返回数据 使用这种方法返回数 ...