转载自DuiLib中文网 http://www.duilibcn.com/duicreator/98.html
想在DLL中使用DuiLib?好吧,用DuiCreator的DuiLib DLL来快速开始吧。
用DuiCreator新建一个工程,工程类别选择DUiLib DLL。
然后点击下一步,完成即可。然后点击编译按钮,使用DuiLib的DLL就制作好了。。
来看一下工程做了什么吧。
cmainwindow.h,cmainwindow.cpp,cmainwindow.xml和以前的工程一样,分别是头文件,源文件和窗体文件。
app.rc是DLL的工程版本。
重点是main.cpp
- #define WIN32_LEAN_AND_MEAN
- #define _CRT_SECURE_NO_SEPRECATE
- #include "cmainwindow.h"
- #define EXPORT_API __declspec(dllexport)
- extern "C" void EXPORT_API ShowDuiWindow()
- {
- CPaintManagerUI::SetInstance(NULL);
- WCHAR sExeDir[500];
- memset(sExeDir,0,sizeof(WCHAR)*500);
- ::GetCurrentDirectoryW(500,sExeDir);
- CPaintManagerUI::SetResourcePath(sExeDir);
- CMainWindow* pFrame = new CMainWindow(L"skin",L"CMainWindow.xml");
- pFrame->Create(NULL,L" Hello DuiLib",UI_WNDSTYLE_FRAME,WS_EX_WINDOWEDGE);
- pFrame->CenterWindow();
- pFrame->ShowWindow();
- CPaintManagerUI::MessageLoop();
- }
- BOOL APIENTRY DllMain( HANDLE hModule,
- DWORD ul_reason_for_call,
- LPVOID lpReserved
- )
- {
- switch (ul_reason_for_call)
- {
- case DLL_PROCESS_ATTACH:
- {
- break;
- }
- case DLL_THREAD_ATTACH:
- case DLL_THREAD_DETACH:
- case DLL_PROCESS_DETACH:
- break;
- }
- return TRUE;
- }
复制代码 首先包含了窗体类的头文件#include "cmainwindow.h"
#define EXPORT_API __declspec(dllexport) 定义导出宏
extern "C" void EXPORT_API ShowDuiWindow() 定义导出函数为ShowDuiWindow()
- CPaintManagerUI::SetInstance(NULL);
复制代码 因为没有WinMain函数了,这里设置为NULL
- CPaintManagerUI::SetResourcePath(sExeDir);
复制代码 这里设置一下图片和XML资源路径
- CMainWindow* pFrame = new CMainWindow(L"skin",L"CMainWindow.xml");
复制代码 图片和XML文件在加载它的EXE的skin文件夹下。
- pFrame->Create(NULL,L" Hello DuiLib",UI_WNDSTYLE_FRAME,WS_EX_WINDOWEDGE);
- pFrame->CenterWindow();
- pFrame->ShowWindow();
- CPaintManagerUI::MessageLoop();
复制代码 创建窗体上级为NULL,当前也可以为它设置一个Parent。
- CPaintManagerUI::MessageLoop();
复制代码 开始DuiLib的消息循环。