1、创建Win32 Project。
Windows application (Empty project)
2、配置include路径:
E:\liigo\mygui\MyGUI_3.2.0\MyGUIEngine\include E:\liigo\mygui\MyGUI_3.2.0\Platforms\DirectX\DirectXPlatform\include E:\liigo\mygui\MyGUI_3.2.0\Common E:\liigo\mygui\MyGUI_3.2.0\Common\Base\DirectX E:\liigo\mygui\MyGUI_3.2.0\Common\Input\Win32
这些目录通常可以设定全局配置,以后再创建项目就不用单独设定了。配置方法:打开任意VC项目,通过菜单View - Propery Manager打开属性管理器,在Propery Manager中展开任意项目,再展开任意Configuration(Debug或Release,两者同步更新),找到其中的“Microsoft.Cpp.Win32.user”,双击打开设置对话框,在左侧大概第三项处找到并选中“VC Directories”,然后在窗口右侧找到“Include Directories”,点击其右端的下拉箭头弹出的"<Edit>"菜单,依次输入上述include目录即可,注意替换为你本机的相应目录。此外,如果DirectX的include目录先前没有设定,也需要在这里指定。
我个人以为VC2012这种设定思路非常不直观,明明是全局的配置,整的好像跟哪个项目关联似的。还有MyGUI里面的Common库,整的也太Common了吧,不怕跟别的重名冲突吗?我看改为MyGUI_Common还差不多。
3、配置lib路径:
E:\liigo\mygui\MyGUI_3.2.0\Build\lib\Release E:\liigo\mygui\MyGUI_3.2.0\Build\lib\Debug E:\liigo\mygui\MyGUI_3.2.0\Dependencies\lib\Release E:\liigo\mygui\MyGUI_3.2.0\Dependencies\lib\Debug
这些目录通常可以设定全局配置,配置方法同上,只是最后设定的是“Library Directories”。如果DirectX的lib目录先前没有设定,也要在这里加上。
4、配置lib文件:
发布版(Release):
MyGUIEngineStatic.lib;MyGUI.DirectXPlatform.lib;Common.lib;freetype2311.lib;d3d9.lib;d3dx9.lib;DxErr.lib;dxguid.lib;
调试版(Debug):
MyGUIEngineStatic_d.lib;MyGUI.DirectXPlatform_d.lib;Common_d.lib;freetype2311_d.lib;d3d9.lib;d3dx9.lib;DxErr.lib;dxguid.lib;
配置方法:VC项目属性对话框,依次找到 Linker - Input - Additional Dependencies。
我这里使用的是静态编译的MyGUI版本,即要求编译MyGUI前在CMake里设定选中MYGUI_STATIC。
5、配置预编译头:
MYGUI_STATIC MYGUI_DIRECTX_PLATFORM _CRT_SECURE_NO_WARNINGS配置方法:VC项目属性对话框,依次找到 C/C++ - Preprocessor - Preprocessor Difinitions。
6、Hello world 程序代码:
我们编写一个HiMyGUI子类继承自base::BaseManager,覆盖(override)方法 setupResources() 指定自己的资源路径(注意必须先调用基类同名方法),覆盖(override)方法 createScene() 加载 .layout 文件(MyGUI::LayoutManager::getInstance().loadLayout())或创建窗口组件(MyGUI::Gui::getInstance().createWidget()),借助delegate机制处理窗口事件。最后通过宏 MYGUI_APP(HiMyGUI) 启动主程序,该宏内部包含了Main函数,负责创建主窗口和初始化MyGUI系统,并负责Windows程序消息循环的处理;前面编写的base::Manager的子类就是被这个宏创建和调度的。
himygui.cpp:
#include <Base/Main.h> #include <BaseManager.h> #include <MyGUI.h> class HiMyGUI : public base::BaseManager { public: HiMyGUI() {} virtual void createScene() { setWindowCaption(L"Hello MyGUI 中文"); MyGUI::VectorWidgetPtr windows = MyGUI::LayoutManager::getInstance().loadLayout("ColourPanel.layout"); m_OKButton = windows.at(0)->findWidget("button_OK")->castType<MyGUI::Button>(); m_OKButton->eventMouseButtonClick += MyGUI::newDelegate(this, &HiMyGUI::notifyOKButtonClick); } virtual void destroyScene() {} private: virtual void setupResources() { base::BaseManager::setupResources(); addResourceLocation(getRootMedia() + "/Demos/Demo_Colour"); } void notifyOKButtonClick(MyGUI::Widget* sender) { setWindowCaption(L"OK按钮被单击"); } MyGUI::Button* m_OKButton; }; MYGUI_APP(HiMyGUI)
这个程序编译成EXE大概1.3MB,静态链接MyGUI库,动态链接VC运行库。外加MyGUI运行所需的资源文件压缩后也就一两兆。
要运行这个hello world,还需要在当前目录(或EXE旁边)放一个 resources.xml 文件:
<?xml version="1.0" encoding="UTF-8"?> <Paths> <Path root="true">E:/liigo/mygui/MyGUI_3.2.0/Media</Path> <Path>E:/liigo/mygui/MyGUI_3.2.0/Media/MyGUI_Media</Path> </Paths>
转载请注明出处:http://blog.csdn.net/liigo