メッセージクラッカーで使用する関数の引数について

[戻る]
suzugoya [E-Mail] [HomePage] 2002/12/26(木) 15:00:51
メッセージクラッカーで使用する関数の引数について
   HANDLE_MSG(hwnd,WM_CREATE,OnCreate);
   HANDLE_MSG(hwnd,WM_COMMAND,OnCommand);
            ・・・
で使用する
   OnCreate()
   OnCommand()
のどの関数の引数の種類、順序が分かりません
よろしくお願いします

 環境  Windows98
        VC6.0
        API  で作成しています

dairygoods 2002/12/26(木) 15:32:28
windowsx.h の例えば、HANDLE_WM_CREATEの部分を見ると、

/* BOOL Cls_OnCreate(HWND hwnd, LPCREATESTRUCT lpCreateStruct) */
#define HANDLE_WM_CREATE(hwnd, wParam, lParam, fn) \

というように、コメントに関数プロトタイプが書いてあります。

n [E-Mail] 2002/12/26(木) 15:32:58
HANDLE_MSG( ウィンドウハンドル, ウィンドウメッセージ番号, 自分で定義した関数の
名前 );

#「Advanced Windows」ですか?

n [E-Mail] 2002/12/26(木) 15:35:15
間違えました。マクロの説明じゃなくハンドラの説明でした。
dairygoodsさんのコメントが正しいです。

suzugoya [E-Mail] [HomePage] 2002/12/26(木) 19:53:53
ご指摘ありがとうございます

Windowsx.hを見てみましたが

1. #define HANDLE_WM_CREATE(hwnd, wParam, lParam, fn) \
    ((fn)((hwnd), (LPCREATESTRUCT)(lParam)) ? 0L : (LRESULT)-1L)

2. #define HANDLE_WM_COMMAND(hwnd, wParam, lParam, fn) \
    ((fn)((hwnd), (int)(LOWORD(wParam)), (HWND)(lParam), (UINT)HIWORD(wParam)), 
0L)

1. OnCreate(HWND,LPCREATESTRUCT)
  ・\ の意味
  ・?後のFALSE TRUE の意味
 が分かりません 
2.  OnCommand(HWND,Control ID,lParam,Notification code)
  ということでしょうか?

n [E-Mail] 2002/12/27(金) 08:12:02
「\」は、マクロ定義がここで終わりじゃなくて次の行にも続きます、という意味です。
「?」は、実は「a ? b : c」という形式で、aが真ならばbを、aが偽ならばcを実行(ま
たは解釈)するという「三項演算子」の一部です。

suzugoya [E-Mail] [HomePage] 2002/12/27(金) 22:38:53
[[解決]]
WM_CREATE   return  0 or -1 --->BOOL OnCreate()
WM_COMMAND  return  0       --->void OnCommand()

  ということで、メッセージ WM_...のreturn値から、
 クラッカー On..でもreturn値のあるなしが決まるということでしょうか

ほぼ、納得しました
ご指摘いただいた方、ありがとうございました

古いスレッドには追加発言できません。