私は、C/C++ で記述され、DLL としてパッケージ化された、古いスタイルの Win32 Windows アプリケーションの 64 ビット バージョンを作成する任務を負っています。64 ビット アプリが実行されるようになりましたが、ダイアログ ボックスのコントロールが Win64 と Win32 で同じに見えません。その理由は、プログラムが を実行し、LoadLibrary("ctl3d32.dll")
成功した場合は のGetProcAddress()
ようなライブラリ エントリ ポイントを収集するために使用されCtl3dSubclassCtl()
、それらのエントリ ポイントを使用して各コントロール クラスをサブクラス化するためです。
ただし、この DLL の 64 ビット バージョンがないため、LoadLibrary()
失敗します。_WIN64
これにより、デフォルトを使用してコントロールがレンダリングされます (これは Windows 10 の場合です。上が Win32、下が Win64 です)。
ボタン コントロールはパスするのに十分似ていますが、グループ ボックスのように使用される (隆起したパッドのように見える) 静的コントロールは、プレーンな白い四角形として描画され、編集ウィンドウには挿入された外観がありません。
これを行う正しい方法は、アプリをビジュアル スタイルに移動することだとわかっていますが、現時点では、Win64 と Win32 で同じように表示する必要があります。を参照せずにこの動作をオンにするスタイルまたはフラグを探しましたが、無駄でしたCTL3D32.DLL
。
他の誰かがこの問題に遭遇し、この機能を 64 ビット GDI コードで複製するか、Visual Styles に移行する以外の解決策を思いつきましたか?