0

VB6を使用すると、AutoRedrawがtrueの場合にForm_Paintが呼び出されないことを認識しています。

Form_Paintで呼び出された場合にのみ一貫して機能するコードがいくつかあります。

このコード(MDIプロジェクトで機能)は、GetMenu()API呼び出しを介して、親で現在アクティブなメニューへのハンドルを取得します。Form_Paintで呼び出されない場合、呼び出しは古いメニューハンドルを返すことがあります。

私のフォームの1つにAutoRedraw=trueがあります。Form_ActivateでGetMenu(parent.hWnd)を試しましたが、これは早すぎます。

また、WindowProcをオーバーライドして、Form_ActivateからWM_USERメッセージを送信してみました。これは改善ですが、それでも十分な一貫性はありません。

子フォームのライフサイクルの後半で、GetMenu(parent.hWnd)をどのように呼び出しますか?

4

1 に答える 1

0

GotFocusイベントを使用してみることができます。これは、Activatedイベントの後、 Paintイベントの前に発生します。

于 2012-11-02T20:35:07.170 に答える