1

メイン ウィンドウの上に表示される CFrameWnd を表示するアプリケーションがあります。ユーザーがウィンドウの特定のモードを選択したときに、ウィンドウを移動およびサイズ変更できないようにする必要があります。
私の CFrameWnd はスタイルで作成されますWS_OVERLAPPEDWINDOW | WS_THICKFRAME | WS_POPUP

サイズ変更/移動を担当する領域をフレームワークが認識しないように書き換える
HTLEFT,HTRIGHT,HTTOP,HTTOPLEFT,HTTOPRIGHT,HTBOTTOM,HTBOTTOMLEFT,HTBOTTOMRIGHT,HTSIZE,HTCAPTIONために CWndOnNcHitTest のオーバーロードを使用するソリューションに出くわしました。 私の場合、この方法はサイズ変更にうまく機能しますが、ウィンドウの移動は引き続き可能ですが、ヒットテストのオーバーライドは正しく機能します (トレースで検証済み)。 HTBORDER

私のアプローチに何か問題がありますか、またはこのソリューションに干渉する何かがある可能性があります。もしそうなら、どこを見るべきかについてのヒントはありますか?

4

1 に答える 1

1

OnNcHitTest()を機能させることができるはずですが、HTCAPTIONを返さないでください。

それでも、ウィンドウを移動/サイズ変更する方法は複数あります。システムメニュー(Alt + Spaceと入力)についても心配する必要があります。WM_MOVINGおよびWM_SIZINGのメッセージハンドラーを作成し、RECTをオーバーライドして、ウィンドウが配置されたままになるようにします。

于 2012-07-30T12:21:10.170 に答える