初老ゲームプログラマの覚え書き

MFCを使う時のメモ

CWinAppの実行アドレスを取得する関数

AfxGetApp

オリジナル・メッセージの作成

ハンドラの定義

メッセージ番号はWM_USERから使用可。限度はヘルプ参照 例: #define WM_MMMM WM_USER + nn

const UINT WM_MMMM = WM_USER + nn;

受信側ウィンドウ(スレッド)メッセージマップ挿入位置

XXXX.cppの先頭近くにある

BEGIN_MESSAGE_MAP(XXXX, BBBB)
ON_MESSAGE(WM_MMMM, OnFFFF) ←メッセージ番号、ハンドラ関数名をエディタにて入力
END_MESSAGE_MAP()

ハンドラ関数の定義

LONG CXXXX::OnFFFF(WPARAM wParm, LPARAM lParam);

メッセージを送信する方法

送信相手がウィンドウ関係のクラス(CWndの派生クラス)

::PostMessage(hWnd, Msg, wParm, lParm);
::SendMessage(hWnd, Msg, wParm, lParm);

送信相手がスレッド(CWinThreadの派生クラス)

::PostThreadMessage(idThread, Msg, wParm, lParm);
::SendMessage(hWnd, Msg, wParm, lParm);

他のクラスの実行アドレスを取得する関数

CDocumentからCView

GetFirstViewPosition/GetNextView

CFrameWndからCDocument

GetActiveDocument

CFrameWndからCView

GetActiveView

CViewからCDocument

GetDocument

CViewからCFrameWnd

GetParentFrame