- ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:WM_NOTIFYのメッセージクラッカー)
WM_NOTIFYのメッセージクラッカーがコンパイルエラーを発生する
このQ&Aのポイント
- Borland C++5.5 FreeVersion XP SP3の環境でWM_NOTIFYのメッセージクラッカーを使用している際にコンパイルエラーが発生します。
- WM_NOTIFYのメッセージクラッカーの宣言や定義に何か問題がある可能性があります。
- 他のメッセージクラッカー(例:WM_PAINT、WM_CREATE)は正常にコンパイルできるため、WM_NOTIFYの問題が特定のエラーを引き起こしている可能性があります。
- みんなの回答 (1)
- 専門家の回答
質問者が選んだベストアンサー
前回、テストしたコードに追加してみました。 # http://okwave.jp/qa/q6394239.html ただし、こちらの環境はVC++2008EEですが…。 #include <windows.h> #include <windowsx.h> #include <COMMCTRL.h> をインクルード。 プロトタイプは int Cls_OnTreeNotify(HWND,int,NMHDR FAR*); に、 WndProc()には HANDLE_MSG(hWnd, WM_NOTIFY, Cls_OnTreeNotify); を 実装は int Cls_OnTreeNotify(HWND hwnd, int idFrom, NMHDR FAR* pnmhdr) { return 0; } で、コンパイルも実行もできています。 # すべての通知に対して0を返却しているので…動作おかしくなるかも知れませんけど。 「(NMHDR FAR*)」の括弧を削除しないと、VC++2008EEではコンパイルエラーとなっていました。 windowsx.hをインクルードしていないと、「error C3861: 'HANDLE_MSG': 識別子が見つかりませんでした」のエラーとなります。
お礼
Wr5さんありがとうございます。 当方でも、()を外しましたらエラーが取れました。 プロトタイプ宣言時・実装時に()を付与するとあまり良くないのですね。 LRESULT OnTreeNotify(HWND, int, NMHDR FAR*); HANDLE_MSG(hWnd, WM_NOTIFY, OnTreeNotify); LRESULT OnTreeNotify(HWND hwnd, int idFrom, NMHDR FAR* pnmh ) { 処理 return 0L; // 必須←戻り値をつけないとマウスカーソル及びTreeViewの処理の不具合発生 } で、正常に動作することを確認しました。