プロが教えるわが家の防犯対策術!

すみませんが教えてください。

これまで左クリックで画面に文字を表示するときには、何も考えずCxxxViewクラスにWM_LBUTTONDOWNをかいていました。ところがCMainFrameクラスにもちゃんとWN_LBUTTONDOWNが用意されているではないですか。

先ほど教えていただいたばかりの左クリックにてウインドウサイズ変更ができると思い以下のようにしましたが、何も起きませんでした。
どうすれば実現できるのでしょうか?

CMainFrameクラスのWN_LBUTTONDOWNはどのような時に使うのですか?

void CMainFrame::OnLButtonDown(UINT nFlags, CPoint point)
{
// TODO: この位置にメッセージ ハンドラ用のコードを追加するかまたはデフォルトの処理を呼び出してください
AfxGetMainWnd()->SetWindowPos(NULL,100,200,300,400,SWP_SHOWWINDOW);
CFrameWnd::OnLButtonDown(nFlags, point);
}

A 回答 (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上で使う場合は不必要です。
    • good
    • 0
この回答へのお礼

何度も回答有難うございます。

******
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上で使う場合は不必要です。
********
確認できました。

お礼日時:2003/03/03 22:23

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人はこんなQ&Aも見ています


このQ&Aを見た人がよく見るQ&A