1. 实现一个可重用的Windows Class(WEWindow)
下面的内容可能需要你知道一点简单的Windows程序编写的知识, 如果发现看不太懂, 也不用找很多的资料, 只要看看DirectX SDK中附带的Direct3D Turtorial就行了.
窗体的建立主要是有如下的难点:
1) 消息循环中的On Idle的处理函数不太好放.
2) WinMain函数入口处的HInstance需要保存
3) 窗体建立之后的HWND也是需要保存的
为了方便起见,我使用了单件模式作为设计,如果大家有更好的想法,也欢迎讨论
WEWindow类的声明看起来有点像这个样子:
1: /* IRenderable.h : 处理初始化窗体的类,使用单件模式
2: Programer : Tan Wangda(LeftNotEasy)
3: Email : Wheeleast@gmail.com
4: Created Time : 2009 - 8 - 10 */
5:
6: #ifndef _WEWINDOW_H
7: #define _WEWINDOW_H
8:
9: # include "WuguiEngine.h"
10:
11: namespace WuguiEngine
12: {
13: //这是一个Singleton
14: class WEWindow
15: {
16: public:
17: //得到窗体类的实例
18: static WEWindow* GetInstance();
19:
20: //设置HInstance
21: void SetHInstance(HINSTANCE hInst);
22: //获取HInstance
23: HINSTANCE GetHInstance();
24:
25: //设置窗体
26: void SetWEWindow(LPCWSTR szTitle, //窗体标题
27: int iWidth, //宽度
28: int iHeight, //高度
29: DWORD iStyle); //样式
30:
31: void CreateMainWindow();
32:
33: int GetWidth();
34: int GetHeight();
35:
36: //获取窗体句柄
37: HWND GetHWnd();
38: protected:
39: HINSTANCE hInst;
40: HWND hWnd;
41:
42: //窗体标题
43: LPCWSTR szTitle;
44:
45: //宽度
46: int iWidth;
47:
48: //高度
49: int iHeight;
50:
51: //样式
52: DWORD iStyle;
53:
54: //创建窗体
55: void CreateWEWindow(LPCWSTR szTitle, //窗体标题
56: int iWidth, //宽度
57: int iHeight, //高度
58: DWORD iStyle); //样式
59:
60: //进入消息循环
61: void EnterMessageLoop();
62: private:
63: static WEWindow* weInstance;
64: WEWindow();
65: };
66: }
67:
68: #endif
编缉推荐阅读以下文章
版权与免责声明
1、本站所发布的文章仅供技术交流参考,本站不主张将其做为决策的依据,浏览者可自愿选择采信与否,本站不对因采信这些信息所产生的任何问题负责。
2、本站部分文章来源于网络,其版权为原权利人所有。由于来源之故,有的文章未能获得作者姓名,署“未知”或“佚名”。对于这些文章,有知悉作者姓名的请告知本站,以便及时署名。如果作者要求删除,我们将予以删除。除此之外本站不再承担其它责任。
3、本站部分文章来源于本站原创,本站拥有所有权利。
4、如对本站发布的信息有异议,请联系我们,经本站确认后,将在三个工作日内做出修改或删除处理。
请参阅权责声明!