首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何用CHtmlView检测 CTRL+Wheel?

如何用CHtmlView检测 CTRL+Wheel?
EN

Stack Overflow用户
提问于 2018-08-13 06:09:54
回答 1查看 0关注 0票数 0

我知道如何将缩放因子设置为CHtmlView:

代码语言:txt
复制
HRESULT CChristianLifeMinistryHtmlView::SetZoomFactor(long iZoom, bool bRefreshBrowser /*true*/)
{
    HRESULT hr = S_OK;
    VARIANT vZoom;

    m_lZoomFactor = iZoom;

    if (bRefreshBrowser)
    {
        vZoom.vt = VT_I4;
        vZoom.lVal = iZoom;

        hr = ExecWB(OLECMDID_OPTICAL_ZOOM, OLECMDEXECOPT_DONTPROMPTUSER, &vZoom, nullptr);
    }

    return hr;
}

HRESULT CChristianLifeMinistryHtmlView::ExecWB(OLECMDID cmdID, OLECMDEXECOPT cmdexecopt, VARIANT *pvaIn, VARIANT *pvaOut)
{
    HRESULT hr;

    ASSERT(m_pBrowserApp != NULL);

    hr = m_pBrowserApp->ExecWB(cmdID, cmdexecopt, pvaIn, pvaOut);
    return hr;
}

我刚介绍了一个CStatusBar在包含此视图的主编辑器中,我的一个用户已经声明,他们使用CTRL+Wheel来更改缩放因子。

我有我的菜单结构与相关的热键,用户可以使用它来改变缩放,因此我的状态栏窗格被更新到他们选择的正确的值。

但是当他们使用CTRL+Wheel改变变焦时,我的应用程序没有检测到这一点。因此,他们放大或缩小到一个比例和我的状态栏窗格保持在原来的缩放因子。

使用MFC和CHtmlViewWeb浏览器控制如何检测他们何时改变了变焦使用CTRL+Wheel,以便我可以更新我的状态窗格?

EN

Stack Overflow用户

发布于 2018-08-13 15:43:21

如果这是CHtmlView使用DOC/View结构,使用PreTranslateMessage捕捉信息。

文件WM_MOUSEWHEEL建议几个宏来查找虚拟键和车轮运动的状态:

代码语言:txt
复制
BOOL CMyHtmlView::PreTranslateMessage(MSG* pmsg)
{
    if(pmsg->message == WM_MOUSEWHEEL)
    {
        int fwKeys = GET_KEYSTATE_WPARAM(pmsg->wParam);
        int zDelta = GET_WHEEL_DELTA_WPARAM(pmsg->wParam);
        if (fwKeys & MK_CONTROL)
        {
            //mousewheel + control key is down
            TRACE("%d %d\n", zDelta, zDelta / WHEEL_DELTA);

            //update statusbar, or return TRUE to handle this manually
        }
    }
    return CHtmlView::PreTranslateMessage(pmsg);
}

CHtmlView也有自己的CHtmlView::ExecWB方法来设置和获取缩放值等。

票数 0
EN
查看全部 1 条回答
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/-100008783

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档