zoukankan      html  css  js  c++  java
  • 在自己的工程中使用开源界面库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;
    }

     

  • 相关阅读:
    Python NLP入门教程
    一个月入门Python爬虫,轻松爬取大规模数据
    Python爬虫实战案例:爬取爱奇艺VIP视频
    探索Python F-strings是如何工作
    Ruby 和 Python 分析器是如何工作的?
    超级干货,python常用函数大总结
    Python 开发者的 6 个必备库,你都了解吗?
    神经网络中 BP 算法的原理与 Python 实现源码解析
    新手程序员必学的代码编程技巧
    零基础小白怎么用Python做表格?
  • 原文地址:https://www.cnblogs.com/blogpro/p/11426961.html
Copyright © 2011-2022 走看看