WindowsXp/BCC5.5の環境でアプリ作りを勉強しています。
「mi.fType = MFT_STRING」として、あらかじめ用意したポップアップメニューに動的にメニューを追加できるのですが、その追加したメニューにビットマップを付加するために、「mi.fType = MFT_OWNERDRAW」で追加したいのです。
しかし、これがうまくいきません。
追加じたいは出来るのですが、メニューIDがWM_MEASUREITEMのところに届いていないみたいで
そのため、オーナードローできずにいます。
つまり、「WM_MEASUREITEM」は飛んできますが、メニューID((UINT) wp)はゼロのままです。
本当は「mi.wID = 1200」を取得したいんです。
そのため、ウインドウメッセージ、WM_MEASUREITEM、WM_DRAWITEMは
飛んできますが、オーナードローができず、困っております。
ポップアップメニュー追加のためのコード(以下抜粋)を記載しています。
どなたか、ご教授できないでしょうか。
宜しくお願いします。
<メニュー追加のためのコード>
memset(&mi, 0, sizeof(MENUITEMINFO));
mi.cbSize=sizeof(MENUITEMINFO);
mi.fMask = MIIM_TYPE | MIIM_ID | MIIM_STATE;
mi.fType = MFT_OWNERDRAW;
mi.wID = 1200;
InsertMenuItem(hSubMenu,0,TRUE,&mi );
以上
No.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なんですね。勉強になります。
今後とも宜しくお願いします。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- その他(パソコン・スマホ・電化製品) シャオミのスマートバンド7、世界時計はどこで設定する? 1 2023/06/27 15:51
- サバイバルゲーム マイクラPEの機種変について 1 2023/06/20 06:05
- ダイエット・食事制限 ローファットダイエットについてアドバイスをください。 現在、体脂肪率が28で肥満1型になった旦那のダ 1 2022/09/03 09:06
- Android(アンドロイド) 【スマホ】スマートフォンのこの下記、5機種の中でmicroSDカード等の外部記憶媒体が挿 0 2023/06/03 18:15
- デスクトップパソコン PCでファイルを右ドラッグして出てくるメニューの編集方法を教えて下さい 2 2023/01/17 13:31
- 筋トレ・加圧トレーニング 高校生女子です。 私は一年ほど前から自宅で腹筋トレーニングをしているんですが、なかなかメニューを安定 2 2022/10/06 14:22
- JavaScript javascriptでテーブルに追加した項目のid追加してローカルストレージを操作したい 5 2023/01/01 15:52
- 歩数計・活動量計 Apple Watch以外の選択理由 2 2022/05/05 09:39
- ファミレス・ファーストフード ココイチの メニュー注文がタブレットに なりまして 大変便利に なったんですけど 追加のカレーソース 2 2023/05/09 22:40
- ファミレス・ファーストフード <至急>マクドナルドの新人バイトです。普段放課後にシフト入るので18時からしか入ってなかったのですが 2 2022/06/09 21:54
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
コントロールの書式設定で、“コ...
-
Excel VBAでのMultipageの選択
-
連続で印刷すると画像が更新さ...
-
エクセルのコントロールツール...
-
C++6.0でのresource.hについて
-
警告表示を非表示にしたい
-
CEdit の内容が変わった時にメ...
-
VB.Net Tabコントロール中のす...
-
ActiveXコントロールを.NETにイ...
-
regsvr32でActiveX登録を行ったocx
-
コモンダイアログコントロール...
-
VB6でタブコントロールが見つか...
-
プロパティシートのタブの名前...
-
エクセルのドロップダウンリス...
-
ワードのドロップダウンリスト
-
C#でChartコントロールを...
-
ラジオボタンのグループ化の方法
-
VB2008かVB2005で、チェックボ...
-
フォームでPDFを表示させた...
-
VB6のPrintオブジェクトで学生...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
コントロールの書式設定で、“コ...
-
エクセルのコントロールツール...
-
フォームでPDFを表示させた...
-
スピンボタンを右クリックして...
-
DateTimePickerでに年月までし...
-
C++6.0でのresource.hについて
-
連続で印刷すると画像が更新さ...
-
ActiveXコントロールを.NETにイ...
-
警告表示を非表示にしたい
-
エクセル - リストボックスのマ...
-
コモンダイアログコントロール...
-
EXCELVBA リストボックスで選択...
-
TabControlとToolBarの背景色変更
-
ワードのドロップダウンリスト
-
文字色を変えたい(ACCESS VBA)
-
CEdit の内容が変わった時にメ...
-
リストボックスの同期
-
VB6.0のデザイン時 コントロー...
-
WM_SIZEを発生させる方法
-
VBAでリストボックス内で↑↓の操...
おすすめ情報