0

CWnd から派生した COpenGLControl クラスがあり、それを自分の目的のためにカスタマイズしているとします。
私はこのようなことをしたい:
1- ダイアログの上部にズーム ツールのツールバー ボタンを追加します。
2-上記のツールバーボタンを押すと、以下で説明する機能が有効になります。
3- ユーザーがマウスの左ボタンをクリックすると、2 倍に拡大され、glTranslate がユーザーのクリック位置に移動します。
4-ユーザーがマウスの右ボタンをクリックすると、0.5 倍に縮小され、glTranslate がユーザーのクリック位置に移動します。
5-ユーザーが別のツールバー ボタンをクリックすると、上記の 2 つの手順で説明した機能が無効になります。

Zoom Toolのようなものを実装したいことがわかりますGlobal Mapper

glScaleorの実装に問題はありませんglTranslate
MFC部分に問題があるだけです。
デフォルトのメッセージ ハンドラを検索するとWM_LBUTTONDBLCLKWM_LBUTTONDOWNWM_LBUTTONUPWM_RBUTTONDBLCLK、がありWM_RBUTTONDOWN、または? WM_RBUTTONUPがないことがわかりました。WM_LBUTTONCLKWM_RBUTTONCLK

WM_LBUTTONCLKまたはがあったとしてもWM_RBUTTONCLK、これらのイベントハンドラーはウィンドウの作成からウィンドウを閉じるまで有効になり、アクティブになりますが、特定の時間 (ズームツールをクリックした後、別のツールをクリックする前) だけアクティブにする必要が
あります。これらの機能をユーザー定義のメッセージ ハンドラーに実装する必要があるかもしれませんが、MFC は初めてなのでわかりません。
出発点となる本当のアイデアを教えていただけませんか?

4

1 に答える 1

0

これに似たものを試してください:

void COpenGLControl::OnLButtonDown(UINT nFlags, CPoint point)
{
    if (zoom_tool_has_been_clicked)
    {
        // do zoom stuff here

        return ;
    }

    CWnd::OnLButtonDown(nFlags, point);
}

アイデアを提供するだけです。

于 2013-08-26T13:33:29.567 に答える