请教更改设置的问题

horsehorse 2003-09-04 05:12:39
在IE中,选择“工具->Internet选项”后,对选项进行设置,点“确定”,IE将自动通知所有的IE窗口,包括CHtmlView窗口,对选项进行更改。
现在想请教的是:在CHtmlView窗口中,怎样才能模拟这种通知机制,让CHtmlView更改字体、颜色等?
...全文
26 点赞 收藏 9
写回复
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
horsehorse 2003-09-05
to jiangsheng(蒋晟.Net):
这篇文章的英文版我已经从头到尾看了3遍以上了。
用IDocHostUIHandler::GetOptionKeyPath接口理论上可以,不过需要将IE的所有其它注册表键都复制过来,太麻烦。
用IDocHostUIHandler2::GetOverrideKeyPath接口很理想,但是只能针对IE 5.5以上的版本,用户难以接受。

准备周末试试看重载IDispatch::Invoke,看能不能从中发现点什么。
回复
masterz 2003-09-05
try
InternetSetOption(NULL, INTERNET_OPTION_SETTINGS_CHANGED, NULL, 0);
InternetSetOption(NULL, INTERNET_OPTION_REFRESH , NULL, 0);
回复
warmchang 2003-09-05
嗯,暂时还不知道,不过帮你顶一下!
回复
蒋晟 2003-09-05
www.csdn.net/develop/read_article.asp?id=19627
回复
horsehorse 2003-09-05
多谢各位的热心回复!不过我的问题可能没有描述清楚,因此造成了误解。
我的问题其实应该是这样:在我的基于CHtmlView的应用中,不希望通过“Internet选项”对话框对显示参数进行设置,因为这样的更改具有全局性,比如说在“辅助功能”中设置了“不使用Web页中指定的颜色”和“不使用Web页中指定的字体大小”,则IE中的正常页面显示也会受到影响。因此希望设置只是针对我自己的CHtmlView应用起作用,不会干扰其它应用。

根据我自己用注册表监视程序监视的结果,“Internet选项”对话框的作用过程是:
1、“Internet选项”对话框将设置写入注册表。
2、枚举IWebBrowser窗口,通知设置已经更改。
3、各窗口读取注册表,更改设置。

因此我设想的更改设置的过程是这样的:
1、备份注册表中的键值。
2、根据需要更改注册表中的键值。
3、通知CHtmlView设置已经更改。
4、恢复注册表中的键值。
现在注册表操作当然没有问题,但是就是不知道该怎么通知CHtmlView设置已经更改。

to gzshd(郁闷):
你的方法是显示“Internet选项”对话框的方法,jiangsheng(蒋晟.Net)提供的第一个链接中其实就有与平台无关的代码。

to jiangsheng(蒋晟.Net):
两篇文章中的方法对我想隐蔽更改“辅助功能”中的“不使用Web页中指定的颜色”和“不使用Web页中指定的字体大小”项帮助不大,不过还是多谢!
第一个链接中的方法使用了undocumented ID,确实如文中所说存在未来兼容性的问题。我现在都是用SendMessage的方法,往WebBrowser窗口发一个WM_COMMAND消息,这个可靠多了。
第二篇文章中所说的方法在与MFCIE中的差不多。

to masterz:
你的方法是对socket函数系进行设置,对IE窗口显示没什么作用。
回复
双杯献酒 2003-09-05
UP
回复
蒋晟 2003-09-04
support.microsoft.com/support/kb/articles/q175/5/13.asp
support.microsoft.com/support/kb/articles/q156/6/93.asp
回复
wuliangge2001 2003-09-04
学习中
回复
gzshd 2003-09-04
98/ME下:
ShellExecute(NULL,NULL,_T("INETCPL.CPL"),NULL,_T("C:\WINDOWS\SYSTEM"),SW_SHOW);
2000以上:
ShellExecute(NULL,NULL,_T("INETCPL.CPL"),NULL,_T("C:\WINDOWS\SYSTEM32"),SW_SHOW);
回复
发动态
发帖子
HTML/XML
创建于2007-09-28

3053

社区成员

VC/MFC HTML/XML
申请成为版主
社区公告
暂无公告