Delphi VCL スタイルの非常に奇妙な動作に直面しました。VCL スタイルを有効にして、madExcept で「バッファ オーバーラン時に即座にクラッシュ」オプションを有効にすると、メニューのスタイルが適用されなくなります。
このオプションをオフにするか、「バッファー UNDERrun で即座にクラッシュする」に切り替えると、メニューの問題が修正されます。
質問は次のとおりです。他の誰かがこの問題に遭遇しましたか? なぜそれが起こり、どのように修正するのですか?
Delphi VCL スタイルの非常に奇妙な動作に直面しました。VCL スタイルを有効にして、madExcept で「バッファ オーバーラン時に即座にクラッシュ」オプションを有効にすると、メニューのスタイルが適用されなくなります。
このオプションをオフにするか、「バッファー UNDERrun で即座にクラッシュする」に切り替えると、メニューの問題が修正されます。
質問は次のとおりです。他の誰かがこの問題に遭遇しましたか? なぜそれが起こり、どのように修正するのですか?
GetClassName
この問題は、 WinAPI 関数への内部呼び出しが原因で発生します。そのための修正をテストしてアップロードしました。そのため、 VCL Styles Utilsプロジェクトの最新バージョンをリポジトリVcl.Styles.Utils.Menus
からダウンロードし、ユニットをプロジェクトVcl.Styles.Utils.SysControls
に追加して、最後にVcl.Styles.Utils.MenusユニットVcl.Styles.Utils.SysStyleHook
の行 (27) をコメント化または削除できます。{$UNDEF UseVCLStyleUtilsMenu}
これは、VCL スタイル コードにバッファ オーバーランがあることを示しているようです。madExcept メモリ マネージャーは、そのバッファー オーバーランを例外としてマニフェストにすることに成功しています。次に、スタイル コードはスタイルを無効にすることで応答します。
次のアクションは、VCL コードをデバッグできるようにデバッグ DCU を有効にして、デバッガーでコードを実行することです。デバッガーが例外をキャッチして、バッファー オーバーランを強調表示することを願っています。
問題の特定に成功した場合は、回避策を作成して QC にバグ レポートを送信できます。