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

IE控件的XP风格化问题

[复制链接]
发表于 2007-3-3 14:51:45 | 显示全部楼层 |阅读模式
IE控件是否支持XP的Theme,说白了只是一个标记(Flag)而已。
8 i$ O- U  |4 T2 w. N2 L0 p如果你使用了ATL的CAxWindow,那么打开Theme支持,只需要:
/ ]! f, t, G, F+ n* A
- R# t3 k6 d) d. I( [5 o   CAxWindow m_ax; // 创建的IE控件。
0 @# Z5 w/ w, p, ~! k' h* ]
4 ^7 w4 e5 G5 P# [) E6 C1 t; V3 j. Z   CComPtr<IAxWinAmbientDispatch> spHost;
9 q* k# Q. S! U& A/ i6 ?" z& `' J. a0 O, y   m_ax.QueryHost(&spHost);" \6 r% V/ Z& g' P2 e
   spHost->put_DocHostFlags() H  f1 ]1 T6 x+ ?& T: x: s: p
       DOCHOSTUIFLAG_NO3DBORDER | ( i/ C' B. `$ ]0 |2 ~* L: X9 r0 g
       DOCHOSTUIFLAG_ENABLE_FORMS_AUTOCOMPLETE | DOCHOSTUIFLAG_THEME);! p7 [6 D( j- X  L

1 Z  K+ z& w6 b2 v/ v! E其中我们最关心的是DOCHOSTUIFLAG_THEME标记,它表示我们希望打开XP的Theme支持。另一个重要的标志是DOCHOSTUIFLAG_ENABLE_FORMS_AUTOCOMPLETE,它表示我们希望IE中的Form支持AutoComplete(自动完成)功能。
. D1 a, u/ n( F. g6 A6 Z 2 U7 w1 a5 @! r3 T# E/ u- {2 Y+ e. _
如果你没有用ATL,那么事情就要麻烦一点。你需要实现IDocHostUIHandler接口(关于该接口的前因后果,参考msdn),注意其中的GetHostInfo方法,它要求返回一个DOCHOSTUIINFO。该结构体中的成员dwFlags,就是ATL中IAxWinAmbientDispatch接口中的DocHostFlags属性。
$ g8 H$ Y, E, v$ ?" u+ P
6 q7 q! l) q3 X$ h# Z另外有个需要一提的细节是,如果你使用VC6,并且没有更新过Platform SDK,那么你很可能没有DOCHOSTUIFLAG_ENABLE_FORMS_AUTOCOMPLETE、DOCHOSTUIFLAG_THEME常量。解决方案有二:
6 P: z3 r% ^% X: e1 \, P" p) G
- i- \* G( I4 @0 W0 l+ D1)安装一个新的Platform SDK,替换掉VC6默认的。0 M" T, w$ j( `/ E. j
2)简单一点,你自己定义一下这两个常量:; v& ^8 v: J8 x; @
#define DOCHOSTUIFLAG_ENABLE_FORMS_AUTOCOMPLETE   0x40006 K0 F2 g" r4 N
#define DOCHOSTUIFLAG_THEME   0x40000
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2025-11-15 07:32 , Processed in 0.015599 second(s), 15 queries .

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

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