MFC中使用Duilib--1

时间:2023-11-28 23:01:02

网上找到Duilib入门教程中,第一个给的时基于SDK的例子,在这里,自己写了个MFC的,与入门教程中的例子一样。

新建一个窗口类(CTestDlg)

TestDlg.h内容如下:

  1. #pragma once
  2. class CTestDlg:public CWindowWnd, INotifyUI
  3. {
  4. public:
  5. CTestDlg(void);
  6. ~CTestDlg(void);
  7. public:
  8. LPCTSTR GetWindowClassName() const;
  9. UINT GetClassStyle() const;
  10. void OnFinalMessage(HWND hWnd);
  11. void Notify(TNotifyUI& msg);
  12. LRESULT HandleMessage(UINT uMsg, WPARAM wParam, LPARAM lParam);
  13. private:
  14. CPaintManagerUI m_pm;
  15. };

TestDlg.cpp内容如下:

  1. #include "StdAfx.h"
  2. #include "TestDlg.h"
  3. CTestDlg::CTestDlg(void)
  4. {
  5. }
  6. CTestDlg::~CTestDlg(void)
  7. {
  8. }
  9. LPCTSTR CTestDlg::GetWindowClassName() const
  10. {
  11. return L"CTestDlg";
  12. }
  13. UINT CTestDlg::GetClassStyle() const
  14. {
  15. return UI_CLASSSTYLE_FRAME | CS_DBLCLKS;
  16. }
  17. void CTestDlg::OnFinalMessage(HWND hWnd)
  18. {
  19. }
  20. void CTestDlg::Notify(TNotifyUI& msg)
  21. {
  22. if( msg.sType == _T("click") ) {
  23. if( msg.pSender->GetName() == _T("closebtn") ) {
  24. Close();
  25. }
  26. }
  27. }
  28. LRESULT CTestDlg::HandleMessage(UINT uMsg, WPARAM wParam, LPARAM lParam)
  29. {
  30. if( uMsg == WM_CREATE ) {
  31. m_pm.Init(m_hWnd);
  32. CControlUI *pButton = new CButtonUI;
  33. pButton->SetName(_T("closebtn"));
  34. pButton->SetBkColor(0xFFFF0000);
  35. m_pm.AttachDialog(pButton);
  36. m_pm.AddNotifier(this);
  37. return 0;
  38. }
  39. else if( uMsg == WM_DESTROY ) {
  40. ::PostQuitMessage(0);
  41. }
  42. LRESULT lRes = 0;
  43. if( m_pm.MessageHandler(uMsg, wParam, lParam, lRes) ) return lRes;
  44. return CWindowWnd::HandleMessage(uMsg, wParam, lParam);
  45. }

然后,在主对话框的类中,增加一个成员变量

  1. CTestDlg m_testDlg;

在OnInitDialog函数中,增加如下两行代码:

  1. m_testDlg.Create(*this, NULL, UI_WNDSTYLE_CHILD, 0, 0, 0, 642, 520);
  2. m_testDlg.ShowWindow(TRUE);

编译运行,即可。