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

IE控件的XP风格化问题

[复制链接]
发表于 2007-3-3 14:51:45 | 显示全部楼层 |阅读模式
IE控件是否支持XP的Theme,说白了只是一个标记(Flag)而已。) c, u1 X' E& u5 L9 Q
如果你使用了ATL的CAxWindow,那么打开Theme支持,只需要:
0 Y  V& W& @6 i4 \* Y * W: R* a  u7 n6 V7 Y4 \
   CAxWindow m_ax; // 创建的IE控件。
$ q" L# @) O1 W, |. o  j0 d* L( L 1 r- v$ T1 U% j" [6 x0 {: r& q
   CComPtr<IAxWinAmbientDispatch> spHost;) y: n' X0 J+ E5 S  c3 R
   m_ax.QueryHost(&spHost);
) E1 i- ~# v) o; {! M   spHost->put_DocHostFlags(7 v4 U; @0 ]* I, k* G6 V# H
       DOCHOSTUIFLAG_NO3DBORDER |
$ E- R: j$ T% r: M* x6 Y' D& S       DOCHOSTUIFLAG_ENABLE_FORMS_AUTOCOMPLETE | DOCHOSTUIFLAG_THEME);/ K7 i7 u- K5 {+ Q
1 j6 F- q' y4 e
其中我们最关心的是DOCHOSTUIFLAG_THEME标记,它表示我们希望打开XP的Theme支持。另一个重要的标志是DOCHOSTUIFLAG_ENABLE_FORMS_AUTOCOMPLETE,它表示我们希望IE中的Form支持AutoComplete(自动完成)功能。) Q. Y3 |$ o, k! `3 ~* E; \& z
7 c; e5 Q* p! k8 P: F
如果你没有用ATL,那么事情就要麻烦一点。你需要实现IDocHostUIHandler接口(关于该接口的前因后果,参考msdn),注意其中的GetHostInfo方法,它要求返回一个DOCHOSTUIINFO。该结构体中的成员dwFlags,就是ATL中IAxWinAmbientDispatch接口中的DocHostFlags属性。2 Y5 N7 \4 U; C+ n+ x0 M
- `  V! N8 \4 x' U
另外有个需要一提的细节是,如果你使用VC6,并且没有更新过Platform SDK,那么你很可能没有DOCHOSTUIFLAG_ENABLE_FORMS_AUTOCOMPLETE、DOCHOSTUIFLAG_THEME常量。解决方案有二: . U8 J4 x" m8 k2 M. v

: M, X" t9 c: K; O1)安装一个新的Platform SDK,替换掉VC6默认的。* c7 C4 V9 Q/ S* S( ?+ u
2)简单一点,你自己定义一下这两个常量:
1 b- |- F9 r( T1 l" d1 L0 s; Z #define DOCHOSTUIFLAG_ENABLE_FORMS_AUTOCOMPLETE   0x40009 B/ J( E: V! W' {/ {! q2 G0 d- h
#define DOCHOSTUIFLAG_THEME   0x40000
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2026-5-2 10:36 , Processed in 0.016801 second(s), 15 queries .

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

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