2021 Duilib最新入門教程(七)Duilib處理消息


前言

  在前面有提到:使用Duilib編寫一個界面軟件,本質上還是一個Win32的軟件,只不過這個軟件的界面不使用Windows自帶的控件,而是交給Duilib繪制界面。
  關於消息處理,底層還是處理Window消息,但Duilib會進一步轉化成Duilib消息,方便編寫響應的邏輯。
  

例子

// 界面上顯示一個按鈕 按鈕名字為btn
<Button name="btn" text="按鈕" />

// 點擊按鈕,會激活按鈕控件,然后產生消息:DUI_MSGTYPE_CLICK
bool CButtonUI::Activate()
{
	if( !CControlUI::Activate() ) return false;
	if( m_pManager != NULL ) 
        m_pManager->SendNotify(this, DUI_MSGTYPE_CLICK);
	return true;
}

// 處理消息 重寫INotifyUI::Notify
virtual void Notify(TNotifyUI& msg) 
{
        // 處理Duilib點擊消息 DUI_MSGTYPE_CLICK
	if (msg.sType == DUI_MSGTYPE_CLICK)	
	{
                // 判斷是否是btn按鈕
		if (msg.pSender->GetName() == _T("btn"))
		{
			::MessageBox(NULL, _T("按鈕內容"), _T("按鈕標題"), NULL);
		}
	}
}

  

小結

  Duilib處理消息,是在Notify函數里面進行處理:先判斷Duilib消息類型,再判斷是哪個控件,最后做出消息處理對應的操作。
  
Duilib技術交流群:799142530
源碼地址:https://github.com/KongKong20/DuilibTutor


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM