【游戏开发】实现自定义游戏窗口
//Windows窗口头文件
#include <windows.h>//窗口宽度
#define WINDOW_WIDTH 800
//窗口高度
#define WINDOW_HEIGHT 600
//窗口标题
#define WINDOW_TITLE L"【游戏开发】自定义游戏窗口"//窗口过程函数
LRESULT CALLBACK WndProc( HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam );//主函数
int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance,LPSTR lpCmdLine, int nShowCmd)
{//定义窗口类WNDCLASSEX wndClass = { 0 };//结构体的字节数大小wndClass.cbSize = sizeof( WNDCLASSEX ) ; //窗口的样式wndClass.style = CS_HREDRAW | CS_VREDRAW; //指向窗口过程函数的指针wndClass.lpfnWndProc = WndProc; //窗口类的附加内存,取0wndClass.cbClsExtra = 0; //窗口的附加内存,依然取0wndClass.cbWndExtra = 0; //窗口过程的程序的实例句柄wndClass.hInstance = hInstance; //ico图标wndClass.hIcon=(HICON)::LoadImage(NULL,L"天龙八部图标.ico",IMAGE_ICON,0,0,LR_DEFAULTSIZE|LR_LOADFROMFILE);//光标句柄wndClass.hCursor = LoadCursor( NULL, IDC_ARROW ); //画刷句柄wndClass.hbrBackground=(HBRUSH)CreateSolidBrush(RGB(255,255,255)); //指定菜单资源的名字wndClass.lpszMenuName = NULL; //指定窗口类的名字wndClass.lpszClassName = L"TWJDWQ";//注册窗口类if( !RegisterClassEx( &wndClass ) ) return -1; //创建窗口HWND hwnd = CreateWindow( L"TWJDWQ",WINDOW_TITLE, WS_OVERLAPPEDWINDOW, CW_USEDEFAULT, CW_USEDEFAULT, WINDOW_WIDTH,WINDOW_HEIGHT, NULL, NULL, hInstance, NULL );//窗口显示的位置MoveWindow(hwnd,250,80,WINDOW_WIDTH,WINDOW_HEIGHT,true);//显示窗口ShowWindow( hwnd, nShowCmd );//更新窗口UpdateWindow(hwnd); //定义并初始化msgMSG msg = { 0 }; //消息循环while( msg.message != WM_QUIT ) {//查看并派发消息if( PeekMessage( &msg, 0, 0, 0, PM_REMOVE ) ){//将虚拟键消息转换为字符消息TranslateMessage( &msg ); //捕捉消息给窗口DispatchMessage( &msg );}}//注销窗口类UnregisterClass(L"TWJDWQ", wndClass.hInstance); return 0;
}//处理窗口消息
LRESULT CALLBACK WndProc( HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam )
{switch( message ) {//绘制case WM_PAINT: ValidateRect(hwnd, NULL); break; //按键case WM_KEYDOWN: //按键为ESC,销毁窗口,并发送一条WM_DESTROY消息if (wParam == VK_ESCAPE) DestroyWindow(hwnd); break; //销毁case WM_DESTROY: //请求终止,并发送一条WM_DESTROY消息PostQuitMessage( 0 ); break; //缺省default: return DefWindowProc( hwnd, message, wParam, lParam ); }return 0;
}
WNDCLASSEX结构体:
第一个参数:结构体的字节大小。
第二个参数:窗口的样式。
第三个参数:指向窗口过程函数的指针。
第四个参数:窗口类附加内存。
第五个参数:窗口的附加内存。
第六个参数:当前窗口的实例句柄。
第七个参数:图标。
第八个参数:光标。
第九个参数:背景画刷。
第十个参数:指定菜单资源,如下拉菜单编辑、保存、载入等。
第十一个参数:窗口类的名字。
第十二个参数:窗口类的小图标,任务栏右下角托盘中应用程序显示的小图标。忽略不写。
CreateWindow函数:
第一个参数:窗口类的名称。
第二个参数:窗口的名称。
第三个参数:窗口样式。WS_OVERLAPPEDWINDOW代表的窗口类型:有标题栏、系统菜单、可调的边框以及最大化、最小化的窗口样式。
第四个参数:窗口的水平位置。
第五个参数:窗口的竖直位置。
第六个参数:窗口宽度。
第七个参数:窗口高度。
第八个参数:被创建窗口的父窗口句柄。
第九个参数:窗口菜单资源句柄。
第十个参数:窗口所属的应用程序实例的句柄。
第十一个参数:在MFC程序中创建多文档界面时会用到。
MoveWindow函数:
第一个参数:窗口句柄。
第二个参数:水平位置。
第三个参数:竖直位置。
第四个参数:窗口宽度。
第五个参数:窗口高度。
第六个参数:在消息处理函数中收到WM_PAINT消息时是否重绘。
ShowWindow函数:
第一个参数:窗口句柄。
第二个参数:窗口的显示状态。
【游戏开发】实现自定义游戏窗口相关推荐
- Silverlight C# 游戏开发:自定义鼠标(一)
我们在游戏中经常应用自定义鼠标来提升游戏的画面品质,一个好的游戏怎么能没有好看的鼠标呢,关于Silverlight的各种自定义鼠标的方法很多,而我将为大家带来的是在游戏当中的应用效果,当然了,做法更加 ...
- 【游戏开发】集合图片、文字、图形、音乐的游戏窗口
//Windows窗口头文件 #include <windows.h>//PlaySound函数包含的头文件 #pragma comment(lib,"winmm.lib&quo ...
- 【游戏开发】游戏窗口输入文字
字体颜色对照表:https://www.sioe.cn/yingyong/yanse-rgb-16/ //Windows窗口头文件 #include <windows.h>//PlaySo ...
- 【Android游戏开发二十三】自定义ListView【通用】适配器并实现监听控件!
本站文章均为 李华明Himi 原创,转载务必在明显处注明: 转载自[黑米GameDev街区] 原文链接: http://www.himigame.com/android-game/374.html L ...
- 【Android游戏开发十七】让玩家自定义手势玩转Android游戏!
本站文章均为 李华明Himi 原创,转载务必在明显处注明: 转载自[黑米GameDev街区] 原文链接: http://www.himigame.com/android-game/340.html ...
- Silverlight C# 游戏开发:L2 自定义模型导入
Balder的Geometries里提供了很多的已有的模型,比如立方体.圆柱等等,但是我们在开发游戏的时候大多情况下都是使用3D设计工具制作自定义的3D模型,而本篇则介绍的是如何导入显示一个自定义的3 ...
- 【Android游戏开发十七】让玩家自定义手势玩转Android游戏!—Android Gesture之【输入法手势技术】...
为什么80%的码农都做不了架构师?>>> 李华明Himi 原创,转载务必在明显处注明: 转载自 [黑米GameDev街区] 原文链接: http://www.himigam ...
- 【iOS-Cocos2d游戏开发之二十一 】自定义精灵类并为你的精灵设置攻击帧(指定开始帧)以及扩展Cocos2d源码的CCAnimation简化动画创建!...
原文链接: http://www.himigame.com/iphone-cocos2d/525.html 本篇的知识点如下: 1. 两种方式实现自定义精灵: 2.两种方 ...
- 【Android游戏开发十七】让玩家自定义手势玩转Android游戏!—Android Gesture之【输入法手势技术】
Himi 原创, 欢迎转载,转载请在明显处注明! 谢谢. 原文地址:http://blog.csdn.net/xiaominghimi/archive/2011/01/14/6137136.aspx ...
最新文章
- lightgbm过去版本安装包_云顶手游10.13安装包,6月24日
- 蚂蚁金服面对亿级并发场景的组件体系设计
- redis3.2.1php扩展,php7.2.1+redis3.2.1 安装redis扩展(windows系统)
- linux系统下安装qgis,深度操作系统 deepin 15.11安装 QGIS 3.4
- LeetCode——LCP 06.拿硬币
- DataSet和DataTable详解
- 搭建了Pycharm对话平台
- 【Java】使用MapReduce程序统计PV数量
- 面板数据回归模型(固定效应、随机效应、混合回归、变系数)、面板数据AR、VAR模型
- $ORACLE_HOME变量值末尾多“/”惹的祸
- override 和 new 关键字的总结
- intelssd在linux固件升级,BUG不再难缠 教会您升级主流SSD固件
- 远程数据采集传输---RTU设备
- 周立功烧写器(ZLG SMARTPRO5000U-Plus)烧写验证
- 查看工作级计算机输入网络密码,怎么查看电脑用户名和密码
- android中dex文件的函数解析
- iOS 封装Healthkit
- Arduino连接超声波传感器测距
- PowerBuilder方式下图像存储功能的研究
- Linux终端更改字体