IE浏览器开发问题,请高手指点。我全部分都给出了。。。帮忙,谢谢。 我自己做了一个浏览器,用的是单文档的工程,视图类是用CHtmlView,现在想实现类似Internet Explorer浏览器文件菜单里的打开,保存,另存为,打印,打印设置等功能,该如何实现呢???谁有搞过,请帮帮忙。非常感谢。 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 typedef enum { OLECMDID_OPEN = 1, OLECMDID_NEW = 2, OLECMDID_SAVE = 3, OLECMDID_SAVEAS = 4, OLECMDID_SAVECOPYAS = 5, OLECMDID_PRINT = 6, OLECMDID_PRINTPREVIEW = 7, OLECMDID_PAGESETUP = 8, OLECMDID_SPELL = 9, OLECMDID_PROPERTIES = 10, OLECMDID_CUT = 11, OLECMDID_COPY = 12, OLECMDID_PASTE = 13, OLECMDID_PASTESPECIAL = 14, OLECMDID_UNDO = 15, OLECMDID_REDO = 16, OLECMDID_SELECTALL = 17, OLECMDID_CLEARSELECTION = 18, OLECMDID_ZOOM = 19, OLECMDID_GETZOOMRANGE = 20 OLECMDID_UPDATECOMMANDS = 21 OLECMDID_REFRESH = 22 OLECMDID_STOP = 23 OLECMDID_HIDETOOLBARS = 24 OLECMDID_SETPROGRESSMAX = 25 OLECMDID_SETPROGRESSPOS = 26 OLECMDID_SETPROGRESSTEXT = 27 OLECMDID_SETTITLE = 28 OLECMDID_SETDOWNLOADSTATE = 29 OLECMDID_STOPDOWNLOAD = 30 OLECMDID_ONTOOLBARACTIVATED = 31, OLECMDID_FIND = 32, OLECMDID_DELETE = 33, OLECMDID_HTTPEQUIV = 34, OLECMDID_HTTPEQUIV_DONE = 35, OLECMDID_ENABLE_INTERACTION = 36, OLECMDID_ONUNLOAD = 37} OLECMDID; 很容易,给你我的几个例子代码就知道怎么办了===void CRightViewBase::OnFilePrintPreview(){ // TODO: 在此添加命令处理程序代码// ExecWB(OLECMDID_SHOWPAGESETUP, OLECMDEXECOPT_PROMPTUSER, NULL, NULL); ExecWB(OLECMDID_PRINTPREVIEW, OLECMDEXECOPT_PROMPTUSER, NULL, NULL);}void CRightViewBase::OnFilePrint(){ // TODO: 在此添加命令处理程序代码 IHTMLDocument2 * pIHtml; LPDISPATCH lpDisp = GetHtmlDocument(); if (lpDisp == NULL || FAILED(lpDisp->QueryInterface(IID_IHTMLDocument2, (void **)&pIHtml))) return; try { VARIANT_BOOL vbRet; VARIANT v; v.vt = VT_NULL; pIHtml->execCommand(SysAllocString(L"Print"), VARIANT_TRUE, v, &vbRet); } catch(COleException * e) { e->ReportError(); e->Delete(); }}void CRightViewBase::SaveDocument(){ /* 要保存HTML文档,通过使用ExecWB是不行的,原因可能是由于我们所操作的HTML文档是 由about:blank 创建的。因此,要打印文档,只有调用IHTMLDocument2的接口execCommand 来实现。 */ IHTMLDocument2 * pIHtml; LPDISPATCH lpDisp = GetHtmlDocument(); if (lpDisp == NULL || FAILED(lpDisp->QueryInterface(IID_IHTMLDocument2, (void **)&pIHtml))) return; try { VARIANT_BOOL vbRet; VARIANT v; v.vt = VT_BSTR; v.bstrVal = SysAllocString(L"机房使用情况报表"); pIHtml->execCommand(SysAllocString(L"SaveAs"), VARIANT_TRUE, v, &vbRet); } catch(COleException * e) { e->ReportError(); e->Delete(); } pIHtml->Release();} 那么打开操作呢????????????我查了msdn,那里说IDM_OPEN ,Not currently supported. 这个该如何处理??? 哦?没试过。不过打开简单阿!可以自己做个对话框,再Navigate2 看msdn:IDocHostUIHandler::ShowContextMenu 我是看到例子了,但是我不知道在哪里添加阿,我用的是CHtmlView的,该在哪里添加呢??麻烦在说说好吗????????????????????? 将"另存为"菜单打算不加在文件菜单中的,我想加在右键菜单中,该如何加进去呢????我用的是CHtmlView,谁知道的?可以说说吗???????? 将"另存为"菜单打算不加在文件菜单中的,我想加在右键菜单中,该如何加进去呢????我用的是CHtmlView,谁知道的?可以说说吗????????谁知道??????请指教急用。。 第一种方法,完全不使用htmlview(事实上是webbrowser控件)的右键菜单,这时你怎么添加都可以第二种方法,像flashget之类的软件一样,把你的菜单项注册到IE的右键菜单上. 我不可能不用chtmlview,因为我很多东西已经写完了,就差一个修改这个htmlview视图里面的右键菜单,我就是想修改它,增加一些进去,而保存ie菜单里面原来的菜单项。具体说说可以吗?????????????麻烦你了,靓子。 我是说不使用htmlview的右键菜单,不是说不用htmlview.你只想在htmlview加一项菜单还是想在只要是IE控件的地方就有你那项菜单?? 我只想在htmlview加一项我自己的菜单,并且包括原来的ie菜单在内的全部菜单内容。请具体指教一下谢谢 http://expert.csdn.net/Expert/topic/2978/2978037.xml 我得到这个htmlview视图里面的右键菜单的接口,然后修改增加我自己的菜单进去。 我想这不太可能.我现在知道的方法就是屏蔽原来的IE的菜单,然后弹出自己的菜单.事实上想做出一个像IE原来的菜单应该不是很麻烦,像前进后退打印刷新等都可以会ExecWB来转发.http://www.csdn.net/develop/article/18/18541.shtm 为什么读到的数据不对??? 北京你伤不起 求问vs2005 CXX0017的问题 picture控件的问题 如果控制关闭其它正在运行的程序? 新手的问题.关于按钮一个一个点亮的问题/ 关于树控件的问题 疯求水晶报表的下载地址.我的邮箱: [email protected] 请教:对局域网内的共享文件夹的问题! 请问如何将LIB文件编译进EXE文件中? 怎么得到行呢??? 如何在SDK对话框中显示ActiveX控件?
{
OLECMDID_OPEN = 1,
OLECMDID_NEW = 2,
OLECMDID_SAVE = 3,
OLECMDID_SAVEAS = 4,
OLECMDID_SAVECOPYAS = 5,
OLECMDID_PRINT = 6,
OLECMDID_PRINTPREVIEW = 7,
OLECMDID_PAGESETUP = 8,
OLECMDID_SPELL = 9,
OLECMDID_PROPERTIES = 10,
OLECMDID_CUT = 11,
OLECMDID_COPY = 12,
OLECMDID_PASTE = 13,
OLECMDID_PASTESPECIAL = 14,
OLECMDID_UNDO = 15,
OLECMDID_REDO = 16,
OLECMDID_SELECTALL = 17,
OLECMDID_CLEARSELECTION = 18,
OLECMDID_ZOOM = 19,
OLECMDID_GETZOOMRANGE = 20
OLECMDID_UPDATECOMMANDS = 21
OLECMDID_REFRESH = 22
OLECMDID_STOP = 23
OLECMDID_HIDETOOLBARS = 24
OLECMDID_SETPROGRESSMAX = 25
OLECMDID_SETPROGRESSPOS = 26
OLECMDID_SETPROGRESSTEXT = 27
OLECMDID_SETTITLE = 28
OLECMDID_SETDOWNLOADSTATE = 29
OLECMDID_STOPDOWNLOAD = 30
OLECMDID_ONTOOLBARACTIVATED = 31,
OLECMDID_FIND = 32,
OLECMDID_DELETE = 33,
OLECMDID_HTTPEQUIV = 34,
OLECMDID_HTTPEQUIV_DONE = 35,
OLECMDID_ENABLE_INTERACTION = 36,
OLECMDID_ONUNLOAD = 37
} OLECMDID;
===
void CRightViewBase::OnFilePrintPreview()
{
// TODO: 在此添加命令处理程序代码
// ExecWB(OLECMDID_SHOWPAGESETUP, OLECMDEXECOPT_PROMPTUSER, NULL, NULL);
ExecWB(OLECMDID_PRINTPREVIEW, OLECMDEXECOPT_PROMPTUSER, NULL, NULL);
}void CRightViewBase::OnFilePrint()
{
// TODO: 在此添加命令处理程序代码
IHTMLDocument2 * pIHtml;
LPDISPATCH lpDisp = GetHtmlDocument();
if (lpDisp == NULL || FAILED(lpDisp->QueryInterface(IID_IHTMLDocument2, (void **)&pIHtml)))
return;
try
{
VARIANT_BOOL vbRet;
VARIANT v;
v.vt = VT_NULL;
pIHtml->execCommand(SysAllocString(L"Print"), VARIANT_TRUE, v, &vbRet);
}
catch(COleException * e)
{
e->ReportError();
e->Delete();
}
}
void CRightViewBase::SaveDocument()
{
/*
要保存HTML文档,通过使用ExecWB是不行的,原因可能是由于我们所操作的HTML文档是
由about:blank 创建的。因此,要打印文档,只有调用IHTMLDocument2的接口execCommand
来实现。
*/
IHTMLDocument2 * pIHtml;
LPDISPATCH lpDisp = GetHtmlDocument();
if (lpDisp == NULL || FAILED(lpDisp->QueryInterface(IID_IHTMLDocument2, (void **)&pIHtml)))
return;
try
{
VARIANT_BOOL vbRet;
VARIANT v;
v.vt = VT_BSTR;
v.bstrVal = SysAllocString(L"机房使用情况报表");
pIHtml->execCommand(SysAllocString(L"SaveAs"), VARIANT_TRUE, v, &vbRet);
}
catch(COleException * e)
{
e->ReportError();
e->Delete();
}
pIHtml->Release();
}
我查了msdn,那里说IDM_OPEN ,Not currently supported.
这个该如何处理???
不过打开简单阿!可以自己做个对话框,再Navigate2
IDocHostUIHandler::ShowContextMenu
麻烦在说说好吗?????????????????????
我用的是CHtmlView,谁知道的?可以说说吗????????
我用的是CHtmlView,谁知道的?可以说说吗????????
谁知道??????请指教急用。。
请具体指教一下谢谢
ExecWB来转发.
http://www.csdn.net/develop/article/18/18541.shtm