1

CView使用可能なすべてのスペースを占有するように、垂直に積み重ねられた複数の Ctrl のプレースホルダーとして機能する があります。私がやりたいことは、マウスで水平境界をつかみ、それを上下にドラッグして Ctrl の高さを変更することです。

問題は、親ウィンドウ (など)ではなく、子 CtrlCViewがマウス メッセージを傍受することです。Ctrl は、関連のない編集要件についてもこれらのメッセージを処理します。CViewWM_LBUTTONDOWNWM_MOUSEMOVE

このサイジング/編集要件に対するアドバイスを提供したり、可能な解決策への参照を提供したりできる人はいますか? この状況は、Visual Studio のリソース エディターに似ています。私だけがライブ環境で編集したい。

4

1 に答える 1

1

これは、次のように簡単に実行できると思います。

  • 子コントロールの間に小さなギャップを残します (たとえば、2 または 3 ピクセル)。これは、同じ色で描くことも、わずかに異なる色合いで描くこともできます。

  • カーソルをIDC_SIZENSメイン CView に設定します。

  • メイン CView (下、移動、..) でマウス メッセージ (マウスがそのギャップの上にあるとき) を処理します。

  • 「ドラッグ」すると、子コントロールのサイズが変更されます。

そうすれば、マウスが 2 ~ 3 ピクセルの「スプリッター」の上にある場合を除いて、すべてのメッセージは引き続き子コントロールに送られます。

小さなギャップを残すことが実際に不可能な場合は、CView ですべてのマウス メッセージをキャプチャし、それらが境界線上にあるかどうかを確認する必要があります。そうでない場合は、マウス カーソルの下の子ウィンドウに転送 (またはデフォルト) します。

于 2016-01-22T14:59:30.890 に答える