7

COMCTL32.OCX( "Microsoft Windows Common Controls 5.0(SP2)")のImageListコントロールを使用してTreeViewsとListViewsのアイコンを提供する古いVB6アプリケーションがあります。

アプリはWindows7.064ビットでも起動しません。ImageListが含まれているフォームを読み込もうとすると、クラッシュします(実際、アプリはウィンクアウトし、トレースなしで終了します)。

フォームからImageListを削除すると、問題が解決します。

何か案は?

4

5 に答える 5

10

この問題は、VB5に付属しているCOMCTL32.OCXのすべてのインスタンスを、VB6に付属しているMSCOMCTL.OCXに置き換えることで解決しました。

Microsoft KBの記事190952には、これを行うための手順が記載されています。これは、ほとんどグローバルな検索と置換の操作でした。

于 2009-06-19T19:28:29.950 に答える
2

あなたの解決策はOKです。ただし、COMCTL32.OCXはWin64(Vistaまたは7)で正常に動作するはずです。

ちょっとしたアドバイス:

MSCOMCTL.OCXを使用している場合、リストビューまたはツリービューにXP / Vista / 7スタイルを適用できず、アプリが異質に見える可能性があります。マニフェストはMSCOMCTL.OCXコントロールに影響を与えません。

回避策は、MSCOMCTL.OCXコントロールをサブクラス化することです。これらのコントロールには、まだCOMCTL32.DLLヘッダーが含まれているため、ペイント方法を操作できます。

(コメントとして投稿したと思いますが、まだ投稿できません)

于 2010-02-21T00:18:38.260 に答える
2

バグをMicrosoftに報告してください。VB6ランタイムは64ビットのWindows7でも引き続きサポートされます。COMCTL32.ocxはWindows7にはインストールされていませんが、Windows7でサポートされていると明示的にリストされています。

于 2009-06-19T18:50:05.797 に答える
1

データ実行保護(DEP)で問題が発生している可能性があります。DEPを無効にしてテストします。

bcdedit.exe /set {current} nx AlwaysOff

コマンドラインに上記を入力した後、再起動します。ズボンを下に向けてWindowsを実行するのと同じことなので、忘れずにオンに戻してください。

編集:上記のコマンドはVistaで機能します。私はWindows7でそれを試していません。

于 2009-06-19T17:01:21.647 に答える
1

それほど劇的ではないDEPの調整は、コンピューターのパフォーマンスダイアログ(システムプロパティの[詳細設定]タブ)に移動し、[DEP]タブの例外のリストにアプリexeを追加します。

ところで、これはserverfault.comに属していないのですか。:P

于 2009-06-19T17:53:36.370 に答える