メッセージクラッカー

naohiro19
記事: 256
登録日時: 14年前
住所: 愛知県

メッセージクラッカー

投稿記事 by naohiro19 » 10年前

Visual Studioには という便利なヘッダーがあります。
この中に HANDLE_MSG というマクロが定義されているのでウィンドウプロシージャ内に HANDLE_MSG(ウィンドウハンドル, 処理するメッセージ, 処理する関数); と記述することで処理をするようになります。

CODE:

#include 
#include 

void OnDestroy(HWND hWnd);
LRESULT CALLBACK WinProc(HWND hWnd, UINT msg, WPARAM wParam, LPARAM lParam){
	switch(msg){
		HANDLE_MSG(hWnd, WM_DESTROY, OnDestroy);
	default:
        return DefWindowProc(hWnd, msg, wParam, lParam);
     }
	return 0L;
}

void OnDestroy(HWND hWnd) {
	PostQuitMessage(0);
}
こういう風に書けばWM_DESTROYのメッセージを受け取った時にPostQuitMessageが実行されます。


アバター
usao
記事: 1889
登録日時: 12年前

Re: メッセージクラッカー

投稿記事 by usao » 10年前

結局関数の型とか引数の意味は調べないとダメだろうし,
自分で
case WM_DESTROY: return OnDestroy(hWnd); break;
とか書くのに比べて手間がほとんど減らないような…?

あと,これ使うならswitchを強制的に書かされるのに,caseはマクロが含んでるというのがなんか個人的に嫌.

どぶろく
記事: 75
登録日時: 13年前

Re: メッセージクラッカー

投稿記事 by どぶろく » 10年前

メッセージ解読マクロと呼んでた人、手をあげて。はーい!
最後に編集したユーザー どぶろく on 2015年9月17日(木) 14:40 [ 編集 1 回目 ]