Claybirdの日記: 駄目な子
日記 by
Claybird
Windows2000とWindowsXPでシェル拡張メニューの挙動が違う。
IContextMenu::QueryContextMenu()でポップアップメニューアイテムと普通のメニューアイテムを追加すると、Windows2000では追加したとおりのメニューが表示される。Windows98でも同じく。
いつもWindows2000が主開発環境なのでその動作(というかドキュメント通りの動作)を前提として作っている。
ところがWindowsXPで同じコードを走らせると、ポップアップメニューアイテムは正しく追加されるのに、普通のメニューアイテムの方は一つしか追加されない。
この現象には以前にも遭遇したことがあって、そのときの自分の掲示板での発言は以下。
http://www2.realint.com/cgi-bin/tarticles.cgi?claybird+122
http://www2.realint.com/cgi-bin/tarticles.cgi?claybird+123
結局、WindowsXPでは普通のメニューアイテムはポップアップメニューアイテムと一緒には追加できそうにないので、代わりに適当なポップアップメニューのサブアイテムとして追加することにして回避。
今回も同じ手で乗り切ることにした。
思いつく限りの手を尽くし、手当たり次第に調べ回ってみたけど原因がまだ分からない。
この手の対症療法は嫌い。
ただ全く不毛だったわけではなく、メニュー無限増殖が修正できたのがせめてもの慰め。
駄目な子 More ログイン