zoukankan      html  css  js  c++  java
  • duilib教程之duilib入门简明教程4.响应按钮事件

    上一个Hello World的教程里有一句代码是这样的:CControlUI *pWnd = new CButtonUI;    也就是说,其实那整块绿色背景区域都是按钮的区域。(这里简要介绍下,CControlUI 是duilib中所有控件的基类,而CButtonUI则是按钮类,更多的控件会在后面的教程一一介绍。)
        那么怎样响应按钮的点击消息呢?
        我们需要几个步骤:
        1、调用AddNotifier函数将消息加入duilib的消息循环
        2、给按钮设置一个唯一的控件ID(SetName函数)
        3、在Notify函数里处理按钮点击消息。
        代码如下:

    1. class CDuiFrameWnd : public CWindowWnd, public INotifyUI
    2. {
    3. public:
    4.     virtual LPCTSTR GetWindowClassName() const { return _T("DUIMainFrame"); }
    5.     virtual void    Notify(TNotifyUI& msg) 
    6.     {
    7.         if(msg.sType == _T("click"))
    8.         {
    9.             if(msg.pSender->GetName() == _T("btnHello")) 
    10.             {
    11.                 ::MessageBox(NULL, _T("我是按钮"), _T("点击了按钮"), NULL);
    12.             }
    13.         }
    14.     }
    15.     virtual LRESULT HandleMessage(UINT uMsg, WPARAM wParam, LPARAM lParam)
    16.     {
    17.         LRESULT lRes = 0;
    18.         if( uMsg == WM_CREATE ) 
    19.         {
    20.             CControlUI *pWnd = new CButtonUI;
    21.             pWnd->SetName(_T("btnHello"));      // 设置控件的名称,这个名称用于标识每一个控件,必须唯一,相当于MFC里面的控件ID
    22.             pWnd->SetText(_T("Hello World"));   // 设置文字
    23.             pWnd->SetBkColor(0xFF00FF00);       // 设置背景色
    24.             m_PaintManager.Init(m_hWnd);
    25.             m_PaintManager.AttachDialog(pWnd);
    26.             m_PaintManager.AddNotifier(this);   // 添加控件等消息响应,这样消息就会传达到duilib的消息循环,我们可以在Notify函数里做消息处理
    27.             return lRes;
    28.         }
    29.         if( m_PaintManager.MessageHandler(uMsg, wParam, lParam, lRes) ) 
    30.         {
    31.             return lRes;
    32.         }
    33.         return __super::HandleMessage(uMsg, wParam, lParam);
    34.     }
    35. protected:
    36.     CPaintManagerUI m_PaintManager;
    37. };
    复制代码


    运行结果如图:

  • 相关阅读:
    LeetCode 485. Max Consecutive Ones
    LeetCode 367. Valid Perfect Square
    LeetCode 375. Guess Number Higher or Lower II
    LeetCode 374. Guess Number Higher or Lower
    LeetCode Word Pattern II
    LeetCode Arranging Coins
    LeetCode 422. Valid Word Square
    Session 共享
    java NIO
    非阻塞IO
  • 原文地址:https://www.cnblogs.com/blogpro/p/11427042.html
Copyright © 2011-2022 走看看