MyGUI 3.2 VC2010项目配置 HelloWorld

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

你可能感兴趣的:(manager,include,dependencies,2010,Warnings,preprocessor)