• duilib教程之duilib入门简明教程3.第一个程序 Hello World


    小伙伴们有点迫不及待了么,来看一看Hello World吧:新建一个空的win32项目,新建一个main.cpp文件,将以下代码复制进去:

    1. #include <windows.h>
    2. #include <tchar.h>
    3. int APIENTRY _tWinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPTSTR lpCmdLine, int nCmdShow)
    4. {
    5.     ::MessageBox(NULL, _T("Hello World !"), NULL, NULL);
    6.     return 0;
    7. }
    复制代码




        运行即可看到如下结果:
         

        咦,这不是win32程序么,你小子忽悠我?
        ~O(∩_∩)O~ 这正是Alberl想要说的:duilib仅仅是一个基于win32的UI库而已,并不是用了duilib以后,它就不是win32程序了。
    很多小伙伴在群里问怎么加托盘,加程序图标等等,可能觉得duilib应该会像MFC一样提供很多封装好的类;或者觉得duilib有实现托盘的功能;或者觉得duilib完全替代了win32和MFC。所以这里Alberl提醒下: duilib并没有像MFC那样把所有的东西全包了,它仅仅包装了UI部分而已,其他的还是需要用win32、MFC的知识,所以除了UI部分,其他的都和duilib木有关系,小伙伴们直接搜索windows相应的关键字就行啦。
        再次强调:把duilib当作一个类库用,而不是一个语言、IDE、框架 ~(^o^)/~

        下面我们来看一看duilib的Hello World。
    注意:
    1、本教程使用的是duilib目前最新的代码,不会下载最新代码的,请阅读【2013 duilib入门简明教程 -- VS环境配置(2)
    2、编译错误的,说明还没配置好环境,请阅读【2013 duilib入门简明教程 -- VS环境配置(2)
    3、鉴于许多网友后面有各种小问题,所以建议大家先下载整个教程的源码,下载请进【2013 duilib入门简明教程 -- 总结 (20)
    )   

    1. #pragma once
    2. #include <UIlib.h>
    3. using namespace DuiLib;
    4. #ifdef _DEBUG
    5. #   ifdef _UNICODE
    6. #       pragma comment(lib, "DuiLib_ud.lib")
    7. #   else
    8. #       pragma comment(lib, "DuiLib_d.lib")
    9. #   endif
    10. #else
    11. #   ifdef _UNICODE
    12. #       pragma comment(lib, "DuiLib_u.lib")
    13. #   else
    14. #       pragma comment(lib, "DuiLib.lib")
    15. #   endif
    16. #endif
    17. class CDuiFrameWnd : public CWindowWnd, public INotifyUI
    18. {
    19. public:
    20.     virtual LPCTSTR GetWindowClassName() const { return _T("DUIMainFrame"); }
    21.     virtual void    Notify(TNotifyUI& msg) {}
    22.     virtual LRESULT HandleMessage(UINT uMsg, WPARAM wParam, LPARAM lParam)
    23.     {
    24.         LRESULT lRes = 0;
    25.         if( uMsg == WM_CREATE ) 
    26.         {
    27.             CControlUI *pWnd = new CButtonUI;
    28.             pWnd->SetText(_T("Hello World"));   // 设置文字
    29.             pWnd->SetBkColor(0xFF00FF00);       // 设置背景色
    30.             m_PaintManager.Init(m_hWnd);
    31.             m_PaintManager.AttachDialog(pWnd);
    32.             return lRes;
    33.         }
    34.         if( m_PaintManager.MessageHandler(uMsg, wParam, lParam, lRes) ) 
    35.         {
    36.             return lRes;
    37.         }
    38.         return __super::HandleMessage(uMsg, wParam, lParam);
    39.     }
    40. protected:
    41.     CPaintManagerUI m_PaintManager;
    42. };
    43. int APIENTRY _tWinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPTSTR lpCmdLine, int nCmdShow)
    44. {
    45.     CPaintManagerUI::SetInstance(hInstance);
    46.     CDuiFrameWnd duiFrame;
    47.     duiFrame.Create(NULL, _T("DUIWnd"), UI_WNDSTYLE_FRAME, WS_EX_WINDOWEDGE);
    48.     duiFrame.ShowModal();
    49.     return 0;
    50. }
    复制代码




        


        一个Hello World就完成了,是不是很简单呢^_^
        PS:上述代码除了显示了文字以外,还有以下特点:
        1、鼠标移到客户区(绿色部分)时,鼠标样式会变成手型
        2、调整窗口大小以及最大化时,Hello World会自适应窗口的大小,一直都居中
        3、如果想改变背景颜色的话,直接调用SetBkColor就行啦,是不是比win32和MFC方便呢~(^o^)/~

  • 相关阅读:
    deepin 配置开发环境
    Springcloud学习笔记(一)总述
    Linux(Centos7) 配置 Tomcat 开机自启
    Linux下安装JDK8
    CentOS7 防火墙和端口管理
    Linux 下安装 MySQL8 教程
    WPF使用CefSharp嵌入网页
    WPF使用第三方字体(TTF字体)
    Hive学习笔记 --Permission denied: user=anonymous, access=READ
    SpringBoot jar 注册windows服务
  • 原文地址:https://www.cnblogs.com/blogpro/p/11427036.html
Copyright © 2020-2023  润新知