一个VC初学者的困惑
我做了一个多文档浏览器,将它设置为默认浏览器后,双击html文件,会启动了它的另一个实例,而不是打开一个子窗口显示对应html页面,edYang,我该如何做。
另外,如何知道html页面的宽度,因为我的多文档浏览器在打开有些带有广告窗口的页面时,广告窗口不充满整个客户区。
还有最后一个问题,如何是我的浏览器支持邮件发送功能,像IE那样可以调用Outlook Express发送html页面。我想主要原因是我不知如何如何将浏览的html页面存为临时文件。
我最高只能给到117分了
问题点数:117、回复次数:21Top
1 楼edyang(化石)回复于 2000-12-29 11:26:00 得分 50
1、启动实例的解决方法:
1)查找主窗口,发送特定的消息,新实例退出;
2)DDE 消息;
3)OLE Automation
这些方法本人都没做过。
2、页面的宽度:不明白你要做什么,因为整个页面的大小是可变的,基本上就是你的 ChtmlView 的大小;
3、支持邮件发送:不知道;
4、如何将浏览的 HTML 页面存为临时文件:请看我的 HTMLDoc 例子。
Top
2 楼HWLee(执著是我最痛!)回复于 2001-01-01 15:38:00 得分 0
edYang,能不能说的详细些,
我快崩溃了,各位高手快来帮帮我。Top
3 楼gameboy999(-'_'-)回复于 2001-01-01 17:57:00 得分 10
第一个问题去查主题:如何只运行一个实例。
我知道的常用方法有三种:
1.注册类名
2.利用互斥体mutex
3.利用全局文件filemapping
剩下的问题没做过,俺不懂
Top
4 楼HWLee(执著是我最痛!)回复于 2001-01-02 10:27:00 得分 0
各位高手,你们好
我用AppWizard生成的多文档工程,只要文档类型是新的类型,则双击文档只启动一个实例,在该实例的子窗口显示对应文档。
我现在恰好用的是系统已注册的html文档类型。
请各位高手分析一下为什么Top
5 楼HWLee(执著是我最痛!)回复于 2001-01-02 19:18:00 得分 0
为什么各位高手不理我Top
6 楼sxbyl(sxbyl)回复于 2001-01-02 19:55:00 得分 7
支持文件发送:ShellExecute(hWnd,"open","mailto: test@sina.com",NULL,NULL,SW_SHOWNORMAL);Top
7 楼HWLee(执著是我最痛!)回复于 2001-01-03 09:34:00 得分 0
sxbyl,我想可能你理解错了。
我直接使用 ON_COMMAND(ID_FILE_SEND_MAIL, OnFileSendMail) 和 ON_UPDATE_COMMAND_UI(ID_FILE_SEND_MAIL, OnUpdateFileSendMail)可以发送邮件,但发送的HTML文档为0字节,我想原因是我没有实现CDocument下的Serialize函数,(因为邮件发送时将文档暂存为临时文件,OnFileSendMail函数调用DoSave函数,DoSave调用OnSaveDocument,OnSaveDocument调用Serialize函数,所以实现Serialize函数就可达到要求)
我不知该如何在Serialize函数中实现对html文档的存储,请各位帮帮我。
Top
8 楼HWLee(执著是我最痛!)回复于 2001-01-05 09:40:00 得分 0
没有人回复吗,为什么。为什么没有人忙我
Top
9 楼HWLee(执著是我最痛!)回复于 2001-01-07 13:54:00 得分 0
没有人回复吗,为什么。为什么没有人忙我Top
10 楼bugn(unknown& whoami)回复于 2001-01-07 15:52:00 得分 0
很简单的,自己看看注册表就知道了
HKEY_CLASSES_ROOT\htmlfile\shell\open\command
HKEY_CLASSES_ROOT\htmlfile\shell\open\ddeexec !
Top
11 楼HWLee(执著是我最痛!)回复于 2001-01-08 10:24:00 得分 0
bugn,你说的我都看过了,我装了NetCaptor浏览器,设置为默认浏览器后,双击html页面会打开NetCaptor子窗口显示页面内容,但你说的注册表项没有什么改变。
这种解决方法不正确。
这是我在CSDN上问的第四个问题,四个问题中只有一个是edYang帮我解决的,我对CSDN快失望了,回复速度太慢,问题解决不了,唉......Top
12 楼HWLee(执著是我最痛!)回复于 2001-01-09 11:05:00 得分 0
各位高手快回复呀Top
13 楼silver(Bai)回复于 2001-01-09 23:32:00 得分 0
给你发了一些例子和资料Top
14 楼HWLee(执著是我最痛!)回复于 2001-01-15 09:52:00 得分 0
我提的问题很难吗,还是各位高手觉得简单不屑回答。
拜托高手们给点回音,我好些天没有收到答复了。谢谢各位。Top
15 楼HWLee(执著是我最痛!)回复于 2001-01-15 11:39:00 得分 0
拜托高手们给点回音,我好些天没有收到答复了。谢谢各位。 Top
16 楼HWLee(执著是我最痛!)回复于 2001-01-15 13:57:00 得分 0
拜托高手们给点回音,我好些天没有收到答复了。谢谢各位。 Top
17 楼HWLee(执著是我最痛!)回复于 2001-01-15 14:59:00 得分 0
帮帮我Top
18 楼bugn(unknown& whoami)回复于 2001-01-16 02:31:00 得分 50
老弟,当然你要先看.htm(.html)指向的东西了;如果装了IE指的就是htmlfile,ie用dde消息在同一进程打开另一个文档。我说看注册表的意思是让你看一般的做法是用dde的.
如果你用的是MFC, 就很简单
在你的InitInstance中做如下改动即可使用DDE:
// enable DDE Execute open
EnableShellOpen();
RegisterShellFileTypes(TRUE);
// Parse command line for standard shell commands, DDE, file open
CCommandLineInfo cmdInfo;
ParseCommandLine(cmdInfo);
// Dispatch commands specified on the command line
if (!ProcessShellCommand(cmdInfo))
return FALSE;
Top
19 楼HWLee(执著是我最痛!)回复于 2001-01-16 11:54:00 得分 0
bugn(bugn)
你的方法我试了,但不能解决每双击一次html文档就打开一个实例的问题,不能在一个实例中的子窗口显示对应文档。Top
20 楼bugn(unknown& whoami)回复于 2001-01-16 12:29:00 得分 0
RegisterShellFileTypes(TRUE);
这一行是关键:
pDocTemplate = new CMultiDocTemplate(
IDR_FOOTYPE,
RUNTIME_CLASS(CFooDoc),
RUNTIME_CLASS(CFooChildFrame),
RUNTIME_CLASS(CFooView));
IDR_FOOTYPE写上你要注册的扩展名,例如:
IDR_FOOTYPE "\nSheet\nWorksheet\nWorksheets (*.myc)\n.myc\n MyCalcSheet\nMyCalc Worksheet"
要不然就自己写注册表,如果只写了.htm,就把.htm的抄到.html来Top




