Hello Worldのは、チュートリアル、このようなコードがあります。CControlUI * PWND =新しいCButtonUIは、つまり、実際には、その全域に緑色の背景領域はボタンです。(ダウンここでは簡単に、CControlUIは、すべてのコントロールの基本クラスduilibあるボタンやCButtonUIがクラスで、より多くのコントロールは、後のチュートリアルで一つずつ紹介します。)
それでは、どのようにメッセージボタンをクリックに反応するんですか?
私たちはいくつかを必要とします手順:
1は、関数呼び出しメッセージAddNotifierはduilibメッセージループ追加
制御ボタンID(SetNameメソッド関数)のユニークなセットに、2
内部通知メッセージ処理機能ボタンのクリックで、3。
コードは以下の通りであります:
- クラスCDuiFrameWnd:公共CWindowWnd、公共INotifyUI
- {
- パブリック:
- 仮想LPCTSTR GetWindowClassName機能()constは{戻り_T( "DUIMainFrame")。}
- 仮想ボイドは通知(TNotifyUI&MSG)
- {
- もし(msg.sType == _T( "クリック"))
- {
- もし(msg.pSender->関連項目GetName()== _T( "btnHello"))
- {
- ::メッセージボックス(NULL、_T( "私はボタンだ")、_T() "ボタンをクリックして"、NULL);
- }
- }
- }
- 仮想LRESULTのhandleMessage(UINT uMsg、WPARAM wParamに、LPARAM lParamに)
- {
- LRESULT LRES = 0。
- もし(uMsg == WM_CREATE)
- {
- CControlUI * PWND =新しいCButtonUI。
- pWnd-> SetNameメソッド(_T(「btnHello」)); //コントロールの名前を設定し、各コントロールを識別するために使用される名前は、一意である必要があり、MFC制御IDに対応
- pWnd->のsetText(_T( "Hello World" の)); //テキストを設定
- pWnd-> SETBKCOLOR(0xFF00FF00); //背景色を設定
- m_PaintManager.Init(m_hWndを)。
- m_PaintManager.AttachDialog(PWND)。
- m_PaintManager.AddNotifier(この); //メッセージの応答コントロールを追加するなど、私たちは通知メッセージ処理機能で行うことができますメッセージループduilibにメッセージを伝えます
- LRESを返します。
- }
- もし(m_PaintManager.MessageHandler(uMsg、wParamに、lParamに、LRES))
- {
- LRESを返します。
- }
- __super返す::のhandleMessage(uMsg、wParamに、lParamに);
- }
- 保護されました:
- CPaintManagerUI m_PaintManager;
- }。
図に示す実行結果: