- ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:CMainFrameクラスの使い方)
CMainFrameクラスの使い方
このQ&Aのポイント
- CMainFrameクラスを使用する際にはWN_LBUTTONDOWNメッセージを使うことができます。
- CMainFrameクラスのOnLButtonDown関数をオーバーライドすることで、ウインドウサイズの変更などの処理を追加することができます。
- OnLButtonDown関数内に追加した処理は、左クリックが行われたときに実行されます。
- みんなの回答 (1)
- 専門家の回答
質問者が選んだベストアンサー
CMainFrameで捕らえられるメッセージはCMainFrameの物だけで、 CMainFrame内にOnLButtonDownを作っても、ViewのWM_LBUTTONDOWNを捕らえる事が出来ないので、何も起きないということになります。 CMainFrameでViewのWM_LBUTTONDOWNを処理したいなら、WM_PARENTNOTIFYを捕まえるのが良いと思います。(自信無しですが) >CMainFrameクラスのWN_LBUTTONDOWNはどのような時に使うのですか? MainFrame上には、色々な子ウィンドウが覆っていますが、これらの隙間(純粋なCMainFrame上の領域)をクリックすれば、WN_LBUTTONDOWNが送られOnLButtonDownが処理されると言う事になります。 (最初の質問で、クライアント領域のサイズが変更できたようですが、その時に空いたスペースをクリックするとWN_LBUTTONDOWNが送られているはずです) ちなみに、AfxGetMainWnd()は、CMainFrameのポインタを取得する為に使ったので、CMainFrame上で使う場合は不必要です。
お礼
何度も回答有難うございます。 ****** CMainFrameで捕らえられるメッセージはCMainFrameの物だけで、 >CMainFrame内にOnLButtonDownを作っても、ViewのWM_LBUTTONDOWNを捕らえる事が出来ないので、何も起きないということになります。 CMainFrameでViewのWM_LBUTTONDOWNを処理したいなら、WM_PARENTNOTIFYを捕まえるのが良いと思います。(自信無しですが) ********** てっきりタイトルバーをクリックすれば動くと思っていました。 ********* CMainFrameクラスのWN_LBUTTONDOWNはどのような時に使うのですか? MainFrame上には、色々な子ウィンドウが覆っていますが、これらの隙間(純粋なCMainFrame上の領域)をクリックすれば、WN_LBUTTONDOWNが送られOnLButtonDownが処理されると言う事になります。 (最初の質問で、クライアント領域のサイズが変更できたようですが、その時に空いたスペースをクリックするとWN_LBUTTONDOWNが送られているはずです) ********** 確かに空いたスペースをクリックすると動きました。 ********** ちなみに、AfxGetMainWnd()は、CMainFrameのポインタを取得する為に使ったので、CMainFrame上で使う場合は不必要です。 ******** 確認できました。