マウスカーソルの制限

[戻る]
Beginner 2003/02/22(土) 11:29:40
いつもお世話になります。
Win2K, VC6.0++, MFCです。
Dialogベースのプログラムでマウスカーソルの動きを制限するべく、以下のコードを書きまし
たが、コンパイルできません。
単純にクライアント領域のみに制限するだけならば、CMainFrame::を取ればうまくいくのです
が、それだとメニューにもカーソルがアクセスできなくなるので、クライアント領域だけでな
く、親の領域(<--このような表現が適切か知らないのですが)にもアクセスできるようにしたい
のですが。

void CBlockHitGameView::OnDraw(CDC* pDC)
{
    CBlockHitGameDoc* pDoc = GetDocument();
    ASSERT_VALID(pDoc);
    // TODO: この場所にネイティブ データ用の描画コードを追加します。

    CRect clientRect;
    CMainFrame::GetWindowRect(&clientRect);//静的でないメンバ関数の中で呼び出
しが正しくありません。
    ClipCursor(&clientRect);    //'GetWindowRect' の宣言を確認してください。


上記のコンパイルエラーが出現します。

宜しくお願いします。

dairygoods 2003/02/22(土) 13:12:54
DialogベースでViewやMainFrameが出てくるのは不思議ですが、
実はSDIであれば、
AfxGetMainWnd()->GetWindowRect(...);
です。

あるいは、GetParent()で順番に親を辿っていって、
親を持たないウィンドウが一番外側の枠です。

インスタンス関数と静的関数の違いを理解しておきましょう。

Beginner 2003/02/22(土) 21:25:16
dairygoods 様、

何時もご指導有難うございます。
ご指摘の如く、SDI baseでした。これすらも自分で分からなくなっているのは、自分の脳みそ
が腐っているためだと思います。申し訳ありません、

つきまては、

>インスタンス関数と静的関数の違いを理解しておきましょう。

というのが理解できません。
もう少しヒントを与えて頂けませんでしょうか。
例によって、毎週末の遠方への出張のために、今も新幹線の中ですので充分にコードを試みるこ
とができません。
本当に申し訳ありません。

επιστημη 2003/02/22(土) 21:29:53
適当な参考書を読んでください。
呼び出しにインスタンスを必要とするか否かの違いがあります。

hu 2003/02/23(日) 01:38:45
C++の入門ページを一通り読んだらどうですか?

Beginner 2003/02/23(日) 07:23:18
[[解決]]
勉強します。有難うございました。

Beginner 2003/02/23(日) 08:32:33
失礼しました。解決の具体的コードを記します。

    CRect clientRect;
    CMainFrame::GetWindowRect(&clientRect);
    ClipCursor(&clientRect);    
これでは駄目、

これはOK
    CRect r;
    AfxGetMainWnd()->GetWindowRect(&r);
    ClipCursor(&r);
これもOK
    CWnd* pw;
    pw = GetParent();
    CRect r;
    pw->GetWindowRect(&r);
    ClipCursor(&r);
でした。インスタンス関数、おぼろげながら理解しつつあります。

>あるいは、GetParent()で順番に親を辿っていって、

ところで、GetParent()はCWnd*の引数を取りませんが、どのように辿っていけばよいでしょう
か。

RAPT [E-Mail] 2003/02/23(日) 11:02:40
>::GetParent
HWND hWndChild;
HWND hWndParent = GetParent(hWndChild);

>CWnd::GetParent
CWnd* pWndChild;
CWnd* pWndParent = pWndChild->GetParent();

Beginner 2003/02/23(日) 16:57:18
RAPT様、

ご指導ありがとうございます。
色々とトライしてみます。

古いスレッドには追加発言できません。