喫茶XRAYトップページ

[スレッド全体
]

[13123] plContextMenuでエラー返信 削除
2019/11/3 (日) 01:56:57 Kuze
Mr.XRAYさん

plContextMenuを利用させていただいておりますが、
Win10環境で、isoファイル上でContextMenuを実行すると、
エラーが発生するため、調べてみましたのでご報告いたします。

Line 548 付近ですが、InfoをクリアしないままGetMenuItemInfoを
使用しており、エラーが発生するようです。
この現象は、isoファイルの場合、画像付きの「マウント」という
メニューが最後に処理されるため、Info.fType = MFT_BITMAPになっているケースです。
通常(Info.fType = MFT_MFT_STRING)は、クリアしなくても、エラーにならないようです。

修正前
      //最後が区切り文字だったら削除
      ItemCount := GetMenuItemCount(Handle);
      GetMenuItemInfo(Handle, ItemCount - 1, True, Info);

修正後
      //最後が区切り文字だったら削除
      ItemCount := GetMenuItemCount(Handle);
      FillChar(VerbName, SizeOf(VerbName), #0);           // ★追加
      Info.cbSize     := SizeOf(Info);                    // ★追加
      Info.fMask      := MIIM_SUBMENU or MIIM_TYPE;       // ★追加
      info.dwTypeData := VerbName;                        // ★追加
      Info.cch        := Length(VerbName);                // ★追加
      GetMenuItemInfo(Handle, ItemCount - 1, True, Info);

としたほうが良さそうです。

[13124] Re:plContextMenuでエラー返信 削除
2019/11/3 (日) 13:35:44 Mr.XRAY
▼ Kuzeさん,どうもです.

これですね.

[ 814_コンテキストメニュー コンポーネント ]
http://mrxray.on.coocan.jp/Delphi/plSamples/814_ContextMenu_DropSource.htm
 
> 修正後

これは,あれですね.Win 10 の環境で発覚したようですが,
コーディングのミスですね.ハハハッ.
後で修正しておきます.ありがとうございます.


[13128] Re2:plContextMenuでエラー返信 削除
2019/11/3 (日) 23:34:46 Kuze
Mr.XRAYさん
ご確認ありがとうございます。

[▼次のスレッド]
INCM/CMT
Cyclamen v3.82