我知道如何将缩放因子设置为CHtmlView:
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,以便我可以更新我的状态窗格?
发布于 2018-08-13 15:43:21
如果这是CHtmlView使用DOC/View结构,使用PreTranslateMessage捕捉信息。
文件WM_MOUSEWHEEL建议几个宏来查找虚拟键和车轮运动的状态:
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方法来设置和获取缩放值等。
https://stackoverflow.com/questions/-100008783
复制相似问题