• 在自己的工程中使用开源界面库Duilib


    配置duilib库

    一个简单的使用Duilib程序一般要在stdafx.h中进行配置(链接duilib的文件,包括头文件)。通常的配置代码如下:

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    #pragma once
    #define WIN32_LEAN_AND_MEAN       
    #define _CRT_SECURE_NO_DEPRECATE
     
    #include <windows.h>
    #include <objbase.h>
    #include "..DuiLibUIlib.h"
    usingnamespaceDuiLib;
     
    #ifdef _DEBUG
    #ifdef _UNICODE
    #pragma comment(lib, "..\bin\DuiLib_ud.lib")
    #else
    #pragma comment(lib, "..\bin\DuiLib_d.lib")
    #endif
    #else
    #ifdef _UNICODE
    #pragma comment(lib, "..\bin\DuiLib_u.lib")
    #else
    #pragma comment(lib, "..\bin\DuiLib.lib")
    #endif
    #endif

    工程之间不同的相对目录,代码中的lib,头文件的目录一样。根据实际情况需要做相应变化。

    编写工程的主窗口

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    // 窗口实例及消息响应部分
    classCFrameWindowWnd : publicCWindowWnd,publicINotifyUI
    {
    public:
       CFrameWindowWnd() { };
       LPCTSTRGetWindowClassName() const{ return_T("UIMainFrame");};
       UINTGetClassStyle() const{ returnUI_CLASSSTYLE_FRAME | CS_DBLCLKS; };
       voidOnFinalMessage(HWND/*hWnd*/) { deletethis; };
     
       voidNotify(TNotifyUI& msg)
       {
          if( msg.sType == _T("click") ) {
     
               if( msg.pSender->GetName() == _T("closebtn") ) {
     
                    Close();
     
               }
     
           }
     
        }
         
        LRESULTHandleMessage(UINTuMsg, WPARAMwParam, LPARAMlParam)
        {
           if( uMsg == WM_CREATE )
           {
               m_pm.Init(m_hWnd);
                
               CControlUI *pButton = newCButtonUI;
               pButton->SetName(_T("closebtn"));
               pButton->SetBkColor(0xFFFF0000);
                
               m_pm.AttachDialog(pButton);
               m_pm.AddNotifier(this);
     
               return0;
           }
           elseif( uMsg == WM_DESTROY )
           {
               ::PostQuitMessage(0);
           }
     
           LRESULTlRes = 0;
           if( m_pm.MessageHandler(uMsg, wParam, lParam, lRes) ) returnlRes;
     
           returnCWindowWnd::HandleMessage(uMsg, wParam, lParam);
        }
         
    public:
       CPaintManagerUI m_pm;
    };

    在winmain处加入消息循环及Duilib初始化部分,窗口创建

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    // 程序入口及Duilib初始化部分
    intAPIENTRY WinMain(HINSTANCEhInstance,HINSTANCE/*hPrevInstance*/, LPSTR/*lpCmdLine*/, intnCmdShow)
    {
       CPaintManagerUI::SetInstance(hInstance);
       CPaintManagerUI::SetResourcePath(CPaintManagerUI::GetInstancePath());
     
       CFrameWindowWnd* pFrame = newCFrameWindowWnd();
       if( pFrame == NULL ) return0;
     
       pFrame->Create(NULL, _T("测试"), UI_WNDSTYLE_FRAME, WS_EX_WINDOWEDGE);
       pFrame->ShowWindow(true);
        
       CPaintManagerUI::MessageLoop();
     
       return0;
    }

     

  • 相关阅读:
    jQuery插件开发入门
    [转]JS学习总结-技巧、方法、细节
    JS无法获取display为none的隐藏元素的宽度和高度的解决方案
    vuejs2.0运用原生js实现简单的拖拽元素功能
    HTML5效果:Canvas 实现圆形进度条并显示数字百分比
    git常用命令总结以及用github来展示你的前端页面
    jQuery 对AMD的支持(Require.js中如何使用jQuery)
    vue+springboot上传和下载附件功能
    springboot+vue实现文件上传
    Spring boot+Vue全栈开发---Spring Boot文件上传
  • 原文地址:https://www.cnblogs.com/blogpro/p/11426961.html
Copyright © 2020-2023  润新知