(5)在DLL中使用DuiLib

转载自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

  1. #define WIN32_LEAN_AND_MEAN
  2. #define _CRT_SECURE_NO_SEPRECATE

  3. #include "cmainwindow.h"

  4. #define EXPORT_API __declspec(dllexport)

  5. extern "C" void EXPORT_API ShowDuiWindow()
  6. {
  7.     CPaintManagerUI::SetInstance(NULL);

  8.     WCHAR sExeDir[500];
  9.     memset(sExeDir,0,sizeof(WCHAR)*500);
  10.     ::GetCurrentDirectoryW(500,sExeDir);
  11.     CPaintManagerUI::SetResourcePath(sExeDir);

  12.     CMainWindow* pFrame = new CMainWindow(L"skin",L"CMainWindow.xml");

  13.     pFrame->Create(NULL,L" Hello DuiLib",UI_WNDSTYLE_FRAME,WS_EX_WINDOWEDGE);
  14.     pFrame->CenterWindow();
  15.     pFrame->ShowWindow();
  16.     CPaintManagerUI::MessageLoop();
  17. }

  18. BOOL APIENTRY DllMain( HANDLE hModule,
  19.                        DWORD  ul_reason_for_call,
  20.                        LPVOID lpReserved
  21.                        )
  22. {
  23.     switch (ul_reason_for_call)
  24.     {
  25.     case DLL_PROCESS_ATTACH:
  26.     {
  27.         break;
  28.     }
  29.     case DLL_THREAD_ATTACH:
  30.     case DLL_THREAD_DETACH:
  31.     case DLL_PROCESS_DETACH:
  32.         break;
  33.     }
  34.     return TRUE;
  35. }
复制代码
首先包含了窗体类的头文件#include "cmainwindow.h"
#define EXPORT_API __declspec(dllexport) 定义导出宏
extern "C" void EXPORT_API ShowDuiWindow() 定义导出函数为ShowDuiWindow()
  1. CPaintManagerUI::SetInstance(NULL);
复制代码
因为没有WinMain函数了,这里设置为NULL
  1. CPaintManagerUI::SetResourcePath(sExeDir);
复制代码
这里设置一下图片和XML资源路径
  1. CMainWindow* pFrame = new CMainWindow(L"skin",L"CMainWindow.xml");
复制代码
图片和XML文件在加载它的EXE的skin文件夹下。
  1. pFrame->Create(NULL,L" Hello DuiLib",UI_WNDSTYLE_FRAME,WS_EX_WINDOWEDGE);
  2. pFrame->CenterWindow();
  3. pFrame->ShowWindow();
  4. CPaintManagerUI::MessageLoop();
复制代码
创建窗体上级为NULL,当前也可以为它设置一个Parent。
  1. CPaintManagerUI::MessageLoop();
复制代码
开始DuiLib的消息循环。

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值