找回密码
 注册
搜索
查看: 6397|回复: 0

IE控件的XP风格化问题

[复制链接]
发表于 2007-3-3 14:51:45 | 显示全部楼层 |阅读模式
IE控件是否支持XP的Theme,说白了只是一个标记(Flag)而已。
5 c' D. v3 m: j5 u如果你使用了ATL的CAxWindow,那么打开Theme支持,只需要:. M, n% A5 o  F! X2 i% L
5 n6 q5 W8 I7 d" @4 y; ]! W
   CAxWindow m_ax; // 创建的IE控件。% J2 O5 l$ c! I8 {
2 K3 o; L# l/ k. Q+ k7 ]
   CComPtr<IAxWinAmbientDispatch> spHost;
# l7 [! H/ n9 [2 H2 ]# ?/ W% Q2 z/ ?, p/ x   m_ax.QueryHost(&spHost);0 s( w9 v6 H) X& \
   spHost->put_DocHostFlags(
6 y5 k7 \  X2 z       DOCHOSTUIFLAG_NO3DBORDER | $ i4 E& J$ S  n: x) X; Y
       DOCHOSTUIFLAG_ENABLE_FORMS_AUTOCOMPLETE | DOCHOSTUIFLAG_THEME);
9 c) o; I0 o& k
* A0 L9 ^# j9 u6 O& Y# S其中我们最关心的是DOCHOSTUIFLAG_THEME标记,它表示我们希望打开XP的Theme支持。另一个重要的标志是DOCHOSTUIFLAG_ENABLE_FORMS_AUTOCOMPLETE,它表示我们希望IE中的Form支持AutoComplete(自动完成)功能。
7 O) C" J7 p6 [ ! I( m* O8 b. t0 A0 k4 G$ u5 u
如果你没有用ATL,那么事情就要麻烦一点。你需要实现IDocHostUIHandler接口(关于该接口的前因后果,参考msdn),注意其中的GetHostInfo方法,它要求返回一个DOCHOSTUIINFO。该结构体中的成员dwFlags,就是ATL中IAxWinAmbientDispatch接口中的DocHostFlags属性。
7 n% `; J# @- `' I , F  K. _* o: P5 p. F
另外有个需要一提的细节是,如果你使用VC6,并且没有更新过Platform SDK,那么你很可能没有DOCHOSTUIFLAG_ENABLE_FORMS_AUTOCOMPLETE、DOCHOSTUIFLAG_THEME常量。解决方案有二: 3 e0 e/ W1 x% v1 f/ w
. i1 x6 @, U7 ~7 h. _5 h, Q1 N
1)安装一个新的Platform SDK,替换掉VC6默认的。" b5 s  Z9 a- {0 H' q* S. N/ c# `4 L
2)简单一点,你自己定义一下这两个常量:
& o' A) m) A# L  L5 T6 ?2 y" I' T$ r #define DOCHOSTUIFLAG_ENABLE_FORMS_AUTOCOMPLETE   0x4000. k" q, ^4 V( w8 G# d
#define DOCHOSTUIFLAG_THEME   0x40000
您需要登录后才可以回帖 登录 | 注册

本版积分规则

Archiver|手机版|小黑屋|宁德市腾云网络科技有限公司 ( 闽ICP备2022007940号-5|闽公网安备 35092202000206号 )

GMT+8, 2025-8-9 02:33 , Processed in 0.034359 second(s), 15 queries .

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表