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

IE控件的XP风格化问题

[复制链接]
发表于 2007-3-3 14:51:45 | 显示全部楼层 |阅读模式
IE控件是否支持XP的Theme,说白了只是一个标记(Flag)而已。
, v0 l; N( H2 B! ?+ }; w' w6 h如果你使用了ATL的CAxWindow,那么打开Theme支持,只需要:
' i. J* X. Z5 g7 h1 Q# } . M1 H$ O7 ^5 b
   CAxWindow m_ax; // 创建的IE控件。9 r) `% H, v- |$ U

' @5 Y5 |, `( P( J- x. n$ M5 p   CComPtr<IAxWinAmbientDispatch> spHost;$ U& Q: s4 a: v" |1 K& u
   m_ax.QueryHost(&spHost);  I* J) `2 b* K7 m* \
   spHost->put_DocHostFlags(
& V* R" j1 O" \7 f: s) E, n       DOCHOSTUIFLAG_NO3DBORDER | 2 E' y7 O, Q) c# [
       DOCHOSTUIFLAG_ENABLE_FORMS_AUTOCOMPLETE | DOCHOSTUIFLAG_THEME);
6 l  u7 s& d9 t
7 ~3 F+ W9 B# H; }3 ^+ G* L其中我们最关心的是DOCHOSTUIFLAG_THEME标记,它表示我们希望打开XP的Theme支持。另一个重要的标志是DOCHOSTUIFLAG_ENABLE_FORMS_AUTOCOMPLETE,它表示我们希望IE中的Form支持AutoComplete(自动完成)功能。& M8 L7 _4 Y- Z2 |: z7 I

$ r$ }! V$ R* ?" N" ]" W5 @. {如果你没有用ATL,那么事情就要麻烦一点。你需要实现IDocHostUIHandler接口(关于该接口的前因后果,参考msdn),注意其中的GetHostInfo方法,它要求返回一个DOCHOSTUIINFO。该结构体中的成员dwFlags,就是ATL中IAxWinAmbientDispatch接口中的DocHostFlags属性。& q7 M5 r2 f! Z9 P
8 B. P9 W" [& l1 C
另外有个需要一提的细节是,如果你使用VC6,并且没有更新过Platform SDK,那么你很可能没有DOCHOSTUIFLAG_ENABLE_FORMS_AUTOCOMPLETE、DOCHOSTUIFLAG_THEME常量。解决方案有二: 9 r6 g1 M1 W5 ]- T( M/ i

8 K8 J( e3 P( A  n1)安装一个新的Platform SDK,替换掉VC6默认的。6 Z% C4 q  v# U* {$ y2 F6 F
2)简单一点,你自己定义一下这两个常量:
3 g( J1 @. _& S- H4 `( M0 M. X% B #define DOCHOSTUIFLAG_ENABLE_FORMS_AUTOCOMPLETE   0x4000* P, K: v& E2 o7 V1 k8 Y
#define DOCHOSTUIFLAG_THEME   0x40000
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2025-8-8 23:36 , Processed in 0.033737 second(s), 15 queries .

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

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