Last Update: 2002/05/17
2001年06月
28293031123
45678910
11121314151617
18192021222324
2526272829301

2001年06月22日

Win32 SDKぷろぐらみんぐ。

メッセージクラッカーってのを知った。 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すると 多重定義エラーがでてしまうわけだぁね。

ほーむ。 | いぬ。 | さる。 | きじ。 || まえ。 | こんげつ。 | つぎ。
ももたろ<info@momo-lab.net>