1

CPaneDialog に問題があります。SetPaneSize MFC 機能パックのサンプル プロジェクトでテストしました。奇妙なのは、CPaneDialog は MainFrm にドッキングできないのに、CDockablePane はドッキングできるということです。CPaneDialog は CDockablePane の子クラスでもありますが、そうではありません。DockToWindow( &other_CPaneDialog_instance... ) のみ可能です。DockToPane() を呼び出すと、CPaneDialog のコンテンツが正しく描画または更新されません。

CPaneDialog を MainFrm ウィンドウにドッキングするにはどうすればよいですか?

もう1つの問題は、描画に関するものです。SetPaneSize サンプルでツリー コントロールのコードを削除すると、view1 (CDockablePane のインスタンス) のコンテンツが正しく再描画されません。いくつかの実験を行った後、OnSize および OnPaint メソッドで何かを行う必要があると判断しました。(OnSize はより重要です。) これは予想される動作ですか?

4

2 に答える 2

0

HexEditをMFC9に変換する(http://www.hexedit.comを参照)この問題が発生しました。VS2010(MFC10)でテストしましたが、このバグは修正されたようです。

また、CMainFrame :: OnCreateでDockToWindowを使用してCDockablePane(ある場合)にドッキングできるため、この問題は大きな問題ではないことにも注意してください。ユーザーはウィンドウをフロートさせたり、他の場所にドッキングしたりできます。プログラムを再度開くと、位置が記憶されて復元されます。

MFC9のこのバグについて新しい人がいると確信しています。したがって、SetPaneSizeデモでの明らかな回避策です(他のすべてのドッキング可能なウィンドウで使用されていたDockPaneではなくCDockablePane :: DockToWindowを呼び出します)。しかし、少なくともそれはMFC10で修正されています。

私が見つけたもう1つのバグは、閉じた(非表示)ときにCPaneDialogがフローティング状態になっている場合、アプリケーションを再起動すると、正しい(非表示)状態に復元されるのではなく、ペインが再度開かれることです。閉じたときにペインがドッキングされている場合、これは発生しません。これはMFC10でも修正されています。

于 2010-03-15T02:31:21.977 に答える