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

IE控件的XP风格化问题

[复制链接]
发表于 2007-3-3 14:51:45 | 显示全部楼层 |阅读模式
IE控件是否支持XP的Theme,说白了只是一个标记(Flag)而已。# n7 @) u8 }# C. w& Z9 I8 C
如果你使用了ATL的CAxWindow,那么打开Theme支持,只需要:- N5 P% w5 r% b* ]: a- b

: f0 q+ q  Y; U3 {4 d6 U   CAxWindow m_ax; // 创建的IE控件。3 B; _- A; T# v$ \1 i) R

+ M+ m8 T; p( E, }5 l   CComPtr<IAxWinAmbientDispatch> spHost;
4 J( s& x! P+ l! @  Z   m_ax.QueryHost(&spHost);
% \5 U$ Y5 y0 ~  C7 H* d   spHost->put_DocHostFlags(
0 G# v# v( j; v4 {/ g! [* N       DOCHOSTUIFLAG_NO3DBORDER |
. F4 U! s9 s1 B  B       DOCHOSTUIFLAG_ENABLE_FORMS_AUTOCOMPLETE | DOCHOSTUIFLAG_THEME);
* P& o+ x' i0 G( ]: f/ z
8 i: O0 e. |: H+ H3 v% J( J$ e/ K其中我们最关心的是DOCHOSTUIFLAG_THEME标记,它表示我们希望打开XP的Theme支持。另一个重要的标志是DOCHOSTUIFLAG_ENABLE_FORMS_AUTOCOMPLETE,它表示我们希望IE中的Form支持AutoComplete(自动完成)功能。
$ I( H. z7 f- h, E9 Q6 ]   y4 E& W8 o% \5 J5 `
如果你没有用ATL,那么事情就要麻烦一点。你需要实现IDocHostUIHandler接口(关于该接口的前因后果,参考msdn),注意其中的GetHostInfo方法,它要求返回一个DOCHOSTUIINFO。该结构体中的成员dwFlags,就是ATL中IAxWinAmbientDispatch接口中的DocHostFlags属性。2 t0 {6 R( G- E* N6 H, Z, \
4 t8 B( \) L2 b; ]3 A# e) d
另外有个需要一提的细节是,如果你使用VC6,并且没有更新过Platform SDK,那么你很可能没有DOCHOSTUIFLAG_ENABLE_FORMS_AUTOCOMPLETE、DOCHOSTUIFLAG_THEME常量。解决方案有二:
7 Q8 |: Z# G% ~& q
+ O' h% U7 R, g& N3 P1)安装一个新的Platform SDK,替换掉VC6默认的。, S+ g8 k$ j4 m% F
2)简单一点,你自己定义一下这两个常量:! V: \5 W2 e2 q. p8 j8 ]  w  Z
#define DOCHOSTUIFLAG_ENABLE_FORMS_AUTOCOMPLETE   0x4000! g# v5 |' u0 Z* j% L
#define DOCHOSTUIFLAG_THEME   0x40000
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2026-6-18 06:54 , Processed in 0.018365 second(s), 15 queries .

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

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