パスワードを忘れた? アカウント作成
498015 journal

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では普通のメニューアイテムはポップアップメニューアイテムと一緒には追加できそうにないので、代わりに適当なポップアップメニューのサブアイテムとして追加することにして回避。
今回も同じ手で乗り切ることにした。

思いつく限りの手を尽くし、手当たり次第に調べ回ってみたけど原因がまだ分からない。
この手の対症療法は嫌い。

ただ全く不毛だったわけではなく、メニュー無限増殖が修正できたのがせめてもの慰め。

この議論は賞味期限が切れたので、アーカイブ化されています。 新たにコメントを付けることはできません。
typodupeerror

目玉の数さえ十分あれば、どんなバグも深刻ではない -- Eric Raymond

読み込み中...