//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函数:

第一个参数:窗口句柄。

第二个参数:窗口的显示状态。

【游戏开发】实现自定义游戏窗口相关推荐

  1. Silverlight C# 游戏开发:自定义鼠标(一)

    我们在游戏中经常应用自定义鼠标来提升游戏的画面品质,一个好的游戏怎么能没有好看的鼠标呢,关于Silverlight的各种自定义鼠标的方法很多,而我将为大家带来的是在游戏当中的应用效果,当然了,做法更加 ...

  2. 【游戏开发】集合图片、文字、图形、音乐的游戏窗口

    //Windows窗口头文件 #include <windows.h>//PlaySound函数包含的头文件 #pragma comment(lib,"winmm.lib&quo ...

  3. 【游戏开发】游戏窗口输入文字

    字体颜色对照表:https://www.sioe.cn/yingyong/yanse-rgb-16/ //Windows窗口头文件 #include <windows.h>//PlaySo ...

  4. 【Android游戏开发二十三】自定义ListView【通用】适配器并实现监听控件!

    本站文章均为 李华明Himi 原创,转载务必在明显处注明: 转载自[黑米GameDev街区] 原文链接: http://www.himigame.com/android-game/374.html L ...

  5. 【Android游戏开发十七】让玩家自定义手势玩转Android游戏!

    本站文章均为 李华明Himi 原创,转载务必在明显处注明: 转载自[黑米GameDev街区] 原文链接: http://www.himigame.com/android-game/340.html   ...

  6. Silverlight C# 游戏开发:L2 自定义模型导入

    Balder的Geometries里提供了很多的已有的模型,比如立方体.圆柱等等,但是我们在开发游戏的时候大多情况下都是使用3D设计工具制作自定义的3D模型,而本篇则介绍的是如何导入显示一个自定义的3 ...

  7. 【Android游戏开发十七】让玩家自定义手势玩转Android游戏!—Android Gesture之【输入法手势技术】...

    为什么80%的码农都做不了架构师?>>>     李华明Himi 原创,转载务必在明显处注明: 转载自 [黑米GameDev街区] 原文链接:  http://www.himigam ...

  8. 【iOS-Cocos2d游戏开发之二十一 】自定义精灵类并为你的精灵设置攻击帧(指定开始帧)以及扩展Cocos2d源码的CCAnimation简化动画创建!...

    原文链接: http://www.himigame.com/iphone-cocos2d/525.html  本篇的知识点如下:        1. 两种方式实现自定义精灵:        2.两种方 ...

  9. 【Android游戏开发十七】让玩家自定义手势玩转Android游戏!—Android Gesture之【输入法手势技术】

    Himi  原创, 欢迎转载,转载请在明显处注明! 谢谢. 原文地址:http://blog.csdn.net/xiaominghimi/archive/2011/01/14/6137136.aspx ...

最新文章

  1. lightgbm过去版本安装包_云顶手游10.13安装包,6月24日
  2. 蚂蚁金服面对亿级并发场景的组件体系设计
  3. redis3.2.1php扩展,php7.2.1+redis3.2.1 安装redis扩展(windows系统)
  4. linux系统下安装qgis,深度操作系统 deepin 15.11安装 QGIS 3.4
  5. LeetCode——LCP 06.拿硬币
  6. DataSet和DataTable详解
  7. 搭建了Pycharm对话平台
  8. 【Java】使用MapReduce程序统计PV数量
  9. 面板数据回归模型(固定效应、随机效应、混合回归、变系数)、面板数据AR、VAR模型
  10. $ORACLE_HOME变量值末尾多“/”惹的祸
  11. override 和 new 关键字的总结
  12. intelssd在linux固件升级,BUG不再难缠 教会您升级主流SSD固件
  13. 远程数据采集传输---RTU设备
  14. 周立功烧写器(ZLG SMARTPRO5000U-Plus)烧写验证
  15. 查看工作级计算机输入网络密码,怎么查看电脑用户名和密码
  16. android中dex文件的函数解析
  17. iOS 封装Healthkit
  18. Arduino连接超声波传感器测距
  19. PowerBuilder方式下图像存储功能的研究
  20. Linux终端更改字体

热门文章

  1. ios上架被拒5.1.1
  2. 计算机网络期末复习(已完结)
  3. 2021年10种手机app界面设计用户体验趋势
  4. Eclipse Virgo插件
  5. 五年级计算机课做什么电子报,电子工业版五年级信息技术5册教案1、小报版面先设计...
  6. 丁鹿学堂:css预处理器之less学习(一)
  7. java技术--SpringCloud:消息总线Bus简介及代码实现(18)
  8. ppt怎么压缩,ppt压缩教程
  9. Spring5(二)
  10. zemax-06扫描系统