このクエストの目標は単純です。TrackPopupMenu API の呼び出しによって表示されるコンテキスト メニューにアイコンを追加することです。しかし、明らかに Windows 向けのコーディングはスプーンでパドリングするようなものであり、所有者がメニューを作成する以外にアイコンを追加する簡単な方法はありません。そのため、所有者が描画したメニューに関する一連の C++ コードを思いついた検索を行いましたが、これまでのところ、自分に合ったものを見つけることができません。理由は簡単です。それが描画するメニューは、Windows 95 から出てきたもののように見えます...では、デフォルトの Windows 7 の外観を持つ所有者が描画したメニューを作成する方法はありますか?
PS。メニュー項目にアイコンを追加する簡単な方法がある場合、たとえば、LoadIcon を設定してから ChangeMenuItem を設定する方法がある場合は、代わりに喜んでそれを使用するので、誰かがその方法を教えてくれれば幸いです...
PS2。OK、私の好みでは長すぎます。このOSで最も単純なタスクを実行できないように見えるのはなぜですか:(問題を説明するために小さなテストプロジェクトを作成しました。アイコンをPARRGBビットマップに変換する独自のCreatePARGBBitmapFromIconメソッドでビットマップをロードします(以下で提案されているように)次に、2 つの場所に表示します: CStatic コントロール (画面の中央、問題ないように見えます) と、メニュー項目 (これはまったく問題ありません) です。Windows 7 と XP のスクリーンショットを次に示します (どちらもまったく異なって見えます)。
みんな、真剣に、ここで何が欠けているのですか????
PS3。@DavidHeffernan のおかげで、修正できました。これが実際の C++/MFC ソリューションです。ソリューションの基になっている記事は次のとおりです。スクリーンショットは次のとおりです。
参考までに、これを解決するのに約2日かかりました.OS XまたはiOSでは約2分かかりました...
そして最後に、私が完全に支持するソース記事からの私のお気に入りの引用のいくつか:
メニュー項目のアイコンを作成するためのシンプルで一貫した API があれば、これらすべてのハックやレシピは無意味になります。残念なことに、メニュー アイコンは、Windows および Microsoft アプリケーションに常に存在していましたが、まともな API を取得できませんでした。さらに、これらのアイコンを機能させる方法は、Windows のメジャー リリースごとに変化するため、開発者はアプリケーションを新しいアプリケーションに「移植」するのに時間を無駄にしています。生産的なことをするのではなく、「シニー」Windows。
そして、これはそれをうまくまとめています:
ああああああああああああああああああああああああああああ!マイクロソフトはなぜ馬鹿だらけなのか???