月 | 火 | 水 | 木 | 金 | 土 | 日 |
---|---|---|---|---|---|---|
28 | 29 | 30 | 31 | 1 | 2 | 3 |
4 | 5 | 6 | 7 | 8 | 9 | 10 |
11 | 12 | 13 | 14 | 15 | 16 | 17 |
18 | 19 | 20 | 21 | 22 | 23 | 24 |
25 | 26 | 27 | 28 | 29 | 30 | 1 |
メッセージクラッカーってのを知った。 windowsx.hをインクルードしてやれば、ウィンドウプロシージャが こんなふーに書けるようになるみたい。
LRESULT CALLBACK WndProc(HWND hwnd, UINT msg, WPARAM wParam, LPARAM lParam) { switch(msg){ HANDLE_MSG(hwnd, WM_CREATE, OnCreate); default: return (DefWindowProc(hWnd, msg, wp, lp)); } return 0; } BOOL OnCreate(HWND hwnd, LPCREATESTRUCT lpCreateStruct) { return TRUE; }
要は、ウィンドウプロシージャがアホみたいに長くなるのを防げるわけだ。
MFCとかWTLとかのメッセージマップってのもこんな風に実装されてるのかな? ・・・って、MFCもWTLもぜんっぜんわかんないんだけどね。
さらにヘッダファイルをぼ〜っと眺めてると、SendMessageをラッピングした マクロがたくさんあった。
SendMessage(hEdit, EM_LIMITTEXT, max_len, 0);
が
Edit_LimitText(hEdit, max_len);
って書けるようになるみたい(試してないけど)。
あ、昨日のWM_COMMANDで通知されないメッセージを受け取る話。 やっぱりサブクラス化が必要みたい。 WM_KEYDOWNでVK_TABとかVK_RETURNとかを拾いたいだけだったのに。 Tabキーでのコントロールのフォーカスの制御なんかもサブクラス化して 実装しないといけなそうなんで、結構面倒だぁね。
そうそう。
VCPPに入った。 さっそく有用な情報が手に入ったんでほくほくしてるとこ。 なにかってゆーと、ヘッダファイルに関数の本体を実装しちゃいけないよって話。 分割コンパイルをしてるときに、 そーやって書かれたヘッダファイルを複数箇所でincludeすると 多重定義エラーがでてしまうわけだぁね。
このページにリンクを張りたい人はご自由にどうぞ。
疑問・感想・要望・不満・文句・愚痴等々ありましたら↓までメール下さいましm(_ _)m