Здравствуйте Fraggle, Вы писали:
F>Подскажите, плз, как для объекта CHtmlView вызвать обработчики работы с клипбордом?
F>Т.е. есть объект, приходит событие — юзер нажал Cut или Copy — и нужно это довести до сведения CHtmlView.
Определяем в CHtmlView такие фукции:
afx_msg void OnEditCopy();
afx_msg void OnUpdateEditCopy(CCmdUI* pCmdUI);
afx_msg void OnEditCut();
afx_msg void OnUpdateEditCut(CCmdUI* pCmdUI);
afx_msg void OnEditPaste();
afx_msg void OnUpdateEditPaste(CCmdUI* pCmdUI);
Далее:
BEGIN_MESSAGE_MAP(CMyHtmlView, CHtmlView)
//{{AFX_MSG_MAP(CMyHtmlView)
ON_COMMAND(ID_EDIT_COPY, OnEditCopy)
ON_UPDATE_COMMAND_UI(ID_EDIT_COPY, OnUpdateEditCopy)
ON_COMMAND(ID_EDIT_CUT, OnEditCut)
ON_UPDATE_COMMAND_UI(ID_EDIT_CUT, OnUpdateEditCut)
ON_COMMAND(ID_EDIT_PASTE, OnEditPaste)
ON_UPDATE_COMMAND_UI(ID_EDIT_PASTE, OnUpdateEditPaste)
Ну собственно реализация методов:
HRESULT CMyHtmlView::ExecFormCommand(const GUID *pGuid, long cmdID, long cmdExecOpt,
VARIANT* pInVar, VARIANT* pOutVar) const
{
CComQIPtr<IHTMLDocument2> spDoc(GetHtmlDocument());
HRESULT hr = E_FAIL;
if (spDoc)
{
CComQIPtr<IOleCommandTarget> spCmdTarg = spDoc;
if (spCmdTarg)
{
hr = spCmdTarg->Exec(pGuid, cmdID, cmdExecOpt, pInVar , pOutVar);
}
else
hr = E_NOINTERFACE;
}
return hr;
}
HRESULT CMyHtmlView::ExecFormCommand(long cmdID, long cmdExecOpt,
VARIANT* pInVar, VARIANT* pOutVar) const
{
return ExecFormCommand(&CGID_MSHTML, cmdID, cmdExecOpt, pInVar, pOutVar);
}
void CMyHtmlView::OnEditCopy()
{
ExecFormCommand(IDM_COPY, OLECMDEXECOPT_DODEFAULT);
}
void CMyHtmlView::OnUpdateEditCopy(CCmdUI* pCmdUI)
{
UpdateCmdUIStatus(pCmdUI, QueryFormStatus(IDM_COPY));
}
void CMyHtmlView::OnEditCut()
{
ExecFormCommand(IDM_CUT, OLECMDEXECOPT_DODEFAULT);
}
void CMyHtmlView::OnUpdateEditCut(CCmdUI* pCmdUI)
{
UpdateCmdUIStatus(pCmdUI, QueryFormStatus(IDM_CUT));
}
void CMyHtmlView::OnEditPaste()
{
ExecFormCommand(IDM_PASTE, OLECMDEXECOPT_DODEFAULT);
}
void CMyHtmlView::OnUpdateEditPaste(CCmdUI* pCmdUI)
{
UpdateCmdUIStatus(pCmdUI, QueryFormStatus(IDM_PASTE));
}
Удачи!
Египко Николай,
www.nikeware.com
"Visual Comparer" — freeware file comparison utility with syntax highlight.