MFCの基礎 - ユーザ定義メッセージ

提供:MochiuWiki : SUSE, EC, PCB
2019年10月24日 (木) 23:07時点におけるWiki (トーク | 投稿記録)による版 (ページの作成:「== 概要 == CWndの派生クラス等でユーザメッセージを定義して使う方法を纏める。<br> 具体的には、SendMessage関数やPostMessage関数を…」)
(差分) ← 古い版 | 最新版 (差分) | 新しい版 → (差分)
ナビゲーションに移動 検索に移動

概要

CWndの派生クラス等でユーザメッセージを定義して使う方法を纏める。
具体的には、SendMessage関数やPostMessage関数を用いて、ユーザメッセージを下記のように呼び出す。

 [CWndの派生クラスへのポインタ]->SendMessage(メッセージ名, WPARAM, LPARAM);



ユーザメッセージの定義

メッセージのIDを定義するため、"stdafx.h"ファイル等に以下を追加する。

 stdafx.h
 
 #define   [メッセージ名]   WM_USER + [任意の整数値]



応答関数の追加

CWndの派生クラスのヘッダファイルに存在する"DECLARE_MESSAGE_MAP"マクロ内に、public属性で以下の関数を追加する。

 CWndの派生クラス.h
 
 afx_msg   LRESULT   [関数名](UINT wParam, LONG lParam);



メッセージマップに登録

CWndの派生クラスのcppファイルに存在する"BEGIN_MESSAGE_MAP"マクロ ~ "END_MESSAGE_MAP"マクロの間に、メッセージと関数の関係を以下のように登録する。

 CWndの派生クラス.cpp
 
 BEGIN_MESSAGE_MAP
 // ...
 ON_MESSAGE(メッセージ名, 関数名)
 // ...
 END_MESSAGE_MAP



関数の記述

CWndの派生クラスのcppファイルに応答関数を以下のように作成する。

 CWndの派生クラス.cpp
 
 LRESULT クラス名::関数名(UINT wParam, LONG lParam)
 {
    // do something
    return 0;
 }