0

假设我有从 CWnd 派生的 COpenGLControl 类,并且我正在为自己的目的对其进行自定义。
我想做这样的事情:
1- 在我的对话框顶部添加一个缩放工具工具栏按钮。
2-按下提到的工具栏按钮后,下面解释的功能被启用。
3-如果用户单击鼠标左键,我们将放大两倍,并 glTranslate 到用户单击的位置。
4-如果用户单击鼠标右键,我们将缩小 0.5 倍并 glTranslate 到用户单击的位置。
5-如果用户单击另一个工具栏按钮,则上述两个步骤中说明的功能将被禁用。

你知道我想实现类似Zoom Toolin 的东西Global Mapper

glScale我在实施or方面没有问题glTranslate
只是MFC部分有问题。
搜索默认消息处理程序,我发现我们有WM_LBUTTONDBLCLK, WM_LBUTTONDOWN, WM_LBUTTONUP, WM_RBUTTONDBLCLK, WM_RBUTTONDOWN,WM_RBUTTONUP但没有WM_LBUTTONCLKor WM_RBUTTONCLK?

即使我们有WM_LBUTTONCLKor 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 回答