2009-06-19 4 views
6

COMビューで、TreeViewsおよびListViewsのアイコンを提供するCOMCTL32.OCX( "Microsoft Windows Common Controls 5.0(SP2)"のImageListコントロールを使用する古いVB6アプリケーションがあります。 。VB6アプリケーションのImageListを使用すると、Windows 7.0でクラッシュする64ビット

アプリはWindows 7.0 64ビットでも起動しません。それがImageListを持つフォームをロードしようとすると、クラッシュします(実際には、アプリがウィンクアウトし、トレースなしで終了します)。

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

アイデア?

+1

マイクロソフトに報告を除いて全く分かりません。第二に、単一の画像作品を証明することによって少し狭めるかもしれない。 –

答えて

8

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

Microsoft KBの資料190952には、この手順が記載されています。これは、単にグローバル検索と置換操作でした。

1

データ実行保護(DEP)に関する問題が発生している可能性があります。

上記をコマンドラインで入力した後にリブートしてください。パンツを下にしてWindowsを実行するのと同じように、それを元に戻すことを忘れないでください。

編集:上記のコマンドはVistaで動作します。私はWindows 7でそれを試していません。

+0

+1古典的なDEPのように聞こえますが、間違いなく最初のコールポートです。 – AnthonyWJones

1

あまり劇的でないDEP調整は、コンピュータのパフォーマンスダイアログ(システムプロパティの詳細タブ)に入り、DEPタブの例外リストにアプリケーションexeを追加します。

ところで、これはserverfault.comに属していないことを確認してください。 :P

2

Microsoftにバグを報告する。 VB6ランタイムは、64ビットWindows 7ではstill supportedです。COMCTL32.ocxはWindows 7ではインストールされていませんが、Windows 7でサポートされているようにexplicitly listedです。

2

解決策はOKです。 しかし、COMCTL32.OCXはWin64でもとにかくうまく動作するはずです(Vistaまたは7)。

ほんの少しのアドバイス:MSCOMCTL.OCXを使用している場合

あなたは、リストビューに適用されますかXP/Vistaの/ 7スタイルとあなたのアプリが外国人に見えるかもしれませんTreeViewコントロールすることはできません。マニフェストはMSCOMCTL.OCXコントロールに影響を与えません。

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

(私はコメントとして投稿しただろうが、私はまだできません)

関連する問題