DuiLib使用教程之二---测试工程

来源:互联网 发布:linux系统能玩游戏吗 编辑:程序博客网 时间:2024/05/22 04:31

DuiLib测试工程

 

以下内容为原创,欢迎转载,转载请注明

来自试着不呼吸的博客:http://blog.csdn.net/haiqiang_softwo/article/details/21485283

 

通过上节(http://blog.csdn.net/haiqiang_softwo/article/details/21485241) 我们已经学会了,如何编译DuiLib生成相应的DLL,从这节起,我们将创建一个测试工程,用最简单的方法来介绍,如何使用这些DLL

创建TestDuiLib工程, 选择Win32项目

然后选择 “Windows应用程序”

生成新的工程后,我们先编译一下,会在TestDuiLib目录下生成Debug目录 和TestDuiLib.exe


将以下8个文件复制到TestDuiLib目录下

如果找不到xxx.lib文件,请将DuiLib的4个 “解决方案配置” 都 重新生成一遍

然后创建TestDuiLib.xml至Debug目录

TestDuiLib.xml的创建方法:
打开 “记事本”,输入以后内容 
<?xml version="1.0" encoding="UTF-8"?>
<Window mininfo="200,360" size="360,600">
 <VerticalLayout inset="10,6,10,6" bkcolor="#FFEA679F" colorhsl="true" borderround="18,18">
 </VerticalLayout>
</Window>
然后保存成UTF-8格式 至Debug目录

在TestDuiLib目录创建 DuiLib目录用来存放.h文件

将.h文件复制到TestDuiLib\DuiLib目录

然后 删除TestDuiLib.cpp文件里面  #include “TestDuiLib.h” 后面所有的代码

用以后代码替换

 

[cpp] view plaincopy在CODE上查看代码片派生到我的代码片
  1. class CFrameWindowWnd : public CWindowWnd, public INotifyUI  
  2. {  
  3. public:  
  4.     CFrameWindowWnd() { };  
  5.     LPCTSTR GetWindowClassName() const { return _T("UIMainFrame"); };  
  6.     UINT GetClassStyle() const { return UI_CLASSSTYLE_FRAME | CS_DBLCLKS; };  
  7.     void OnFinalMessage(HWND /*hWnd*/) { delete this; };  
  8.   
  9.     void Init() { }  
  10.   
  11.     void Notify(TNotifyUI& msg)  
  12.     {  
  13.           
  14.     }  
  15.   
  16.     LRESULT HandleMessage(UINT uMsg, WPARAM wParam, LPARAM lParam)  
  17.     {  
  18.         if( uMsg == WM_CREATE ) {  
  19.             m_pm.Init(m_hWnd);  
  20.             CDialogBuilder builder;  
  21.             CControlUI* pRoot = builder.Create(_T("TestDuiLib.xml"), (UINT)0, NULL, &m_pm);  
  22.             ASSERT(pRoot && "Failed to parse XML");  
  23.             m_pm.AttachDialog(pRoot);  
  24.             m_pm.AddNotifier(this);  
  25.             Init();  
  26.             return 0;  
  27.         }  
  28.         else if( uMsg == WM_DESTROY ) {  
  29.             ::PostQuitMessage(0L);  
  30.         }  
  31.         else if( uMsg == WM_ERASEBKGND ) {  
  32.             return 1;  
  33.         }  
  34.         LRESULT lRes = 0;  
  35.         if( m_pm.MessageHandler(uMsg, wParam, lParam, lRes) ) return lRes;  
  36.         return CWindowWnd::HandleMessage(uMsg, wParam, lParam);  
  37.     }  
  38.   
  39. public:  
  40.     CPaintManagerUI m_pm;  
  41. };  
  42.   
  43.   
  44. int APIENTRY _tWinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPTSTR lpCmdLine, int nCmdShow)  
  45. {  
  46.     CPaintManagerUI::SetInstance(hInstance);  
  47.     CPaintManagerUI::SetResourcePath(CPaintManagerUI::GetInstancePath());  
  48.   
  49.     HRESULT Hr = ::CoInitialize(NULL);  
  50.     if( FAILED(Hr) ) return 0;  
  51.   
  52.     CFrameWindowWnd* pFrame = new CFrameWindowWnd();  
  53.     if( pFrame == NULL ) return 0;  
  54.     pFrame->Create(NULL, _T("TestDuiLib测试"), UI_WNDSTYLE_FRAME, WS_EX_WINDOWEDGE);  
  55.     pFrame->CenterWindow();  
  56.     pFrame->ShowWindow(true);  
  57.     CPaintManagerUI::MessageLoop();  
  58.   
  59.     ::CoUninitialize();  
  60.     return 0;  
  61. }  


 然后将以下代码 复制到stdafx.h

[cpp] view plaincopy在CODE上查看代码片派生到我的代码片
  1. #include "..\DuiLib\UIlib.h"  
  2.   
  3. using namespace DuiLib;  
  4.   
  5. #ifdef _DEBUG  
  6. #   ifdef _UNICODE  
  7. #       pragma comment(lib, "DuiLib_ud.lib")  
  8. #   else  
  9. #       pragma comment(lib, "DuiLib_d.lib")  
  10. #   endif  
  11. #else  
  12. #   ifdef _UNICODE  
  13. #       pragma comment(lib, "DuiLib_u.lib")  
  14. #   else  
  15. #       pragma comment(lib, "DuiLib.lib")  
  16. #   endif  
  17. #endif  


 现在我们开始编译,会发现提示以下错误

 这是因为DuiLib小组在开发的时候,将#include <olectl.h> 语句放在了stdafx.h文件里面,没有放在uirichedit.h里面导致的,解决这个问题,我们可以将这个语句 放在我们的stdafx.h文件里了,注意要在#include “..\DuiLib\UIlib.h”上面

然后编译,就不会出现错误了

直接运行,我们就可以看到简单的测试程序了

如果想双击 TestDuiLib.exe运行,请将xxxx.dll4个文件复制到Debu目录

 Demo我以上传到csdn   大家可以通过 http://download.csdn.net/detail/haiqiang_softwo/7062501 下载

0 0