- ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:動的に追加したポップアップメニューのオーナードロー)
動的に追加したポップアップメニューのオーナードローについて
このQ&Aのポイント
- WindowsXp/BCC5.5の環境でアプリ作りを勉強しています。動的に追加したポップアップメニューのオーナードローに関して、うまくいかない問題が発生しています。
- 質問者は、「mi.fType = MFT_STRING」としてあらかじめ用意したポップアップメニューに動的にメニューを追加できることを確認しましたが、追加したメニューにビットマップを付加するために「mi.fType = MFT_OWNERDRAW」を使用しようとしています。
- しかし、メニューIDがWM_MEASUREITEMに届かないため、オーナードローができずに困っています。質問者は「mi.wID = 1200」を取得したいと述べており、ウインドウメッセージWM_MEASUREITEMとWM_DRAWITEMは届くが、オーナードローができないという状況にあります。
- みんなの回答 (1)
- 専門家の回答
質問者が選んだベストアンサー
wParamからIDを取得できるのは ComboBoxやListBoxなどのコントロールのようです メニューの場合 lParamを適切な構造体のポインタにキャストして itemIDで判定するようですよ WM_MEASUREITEMならばMEASUREITEMSTRUCT WM_DRAWITEMならば DRAWITEMSTRUCT といった具合です case WM_MEASUREITEM: lpMIS = (LPMEASUREITEMSTRUCT)lParam; if ( lpMIS->itemID == 1200 ) { // 必要な初期設定 } break;
お礼
出来ました! ありがとうございます。 数日悩んでいたので、大変助かりました。 wParamからIDを取得できるのは ComboBoxやListBoxなんですね。勉強になります。 今後とも宜しくお願いします。