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

IE控件的XP风格化问题

[复制链接]
发表于 2007-3-3 14:51:45 | 显示全部楼层 |阅读模式
IE控件是否支持XP的Theme,说白了只是一个标记(Flag)而已。
) l: |  T) Y  S) |2 A' z4 D如果你使用了ATL的CAxWindow,那么打开Theme支持,只需要:
% L) W& ]$ ?! ?7 d) h" c2 }
7 e& r$ g8 i$ U& _   CAxWindow m_ax; // 创建的IE控件。
4 k+ g( y$ a" O: J5 [: A" \( Q8 T ' p5 Y+ n8 `- B/ k9 p! z
   CComPtr<IAxWinAmbientDispatch> spHost;
, Y' @4 b6 D) H0 m( r. W' }! G   m_ax.QueryHost(&spHost);
8 T5 b" i% k: p; m+ r8 Z) B* f   spHost->put_DocHostFlags(
3 K/ Y; t2 g% Y/ I1 s( s* R! D% {" Y       DOCHOSTUIFLAG_NO3DBORDER | / L& ~" o( s$ K' _
       DOCHOSTUIFLAG_ENABLE_FORMS_AUTOCOMPLETE | DOCHOSTUIFLAG_THEME);
7 x0 j6 ~" R; ]; P2 _ * b! w' J; w$ E+ P- {9 [' [
其中我们最关心的是DOCHOSTUIFLAG_THEME标记,它表示我们希望打开XP的Theme支持。另一个重要的标志是DOCHOSTUIFLAG_ENABLE_FORMS_AUTOCOMPLETE,它表示我们希望IE中的Form支持AutoComplete(自动完成)功能。- o. y/ H* q* M: ~$ [

2 ]/ @8 q9 x3 ]' Y' g如果你没有用ATL,那么事情就要麻烦一点。你需要实现IDocHostUIHandler接口(关于该接口的前因后果,参考msdn),注意其中的GetHostInfo方法,它要求返回一个DOCHOSTUIINFO。该结构体中的成员dwFlags,就是ATL中IAxWinAmbientDispatch接口中的DocHostFlags属性。7 r6 o6 |9 y/ w6 A# C* A# G

- b* ]: G% j1 A6 B+ ~: B另外有个需要一提的细节是,如果你使用VC6,并且没有更新过Platform SDK,那么你很可能没有DOCHOSTUIFLAG_ENABLE_FORMS_AUTOCOMPLETE、DOCHOSTUIFLAG_THEME常量。解决方案有二:
% `# X6 N! t) G$ Z' R $ q. J- a) D+ I. i) Q% {/ s' k# l
1)安装一个新的Platform SDK,替换掉VC6默认的。' Q- _  J+ z, ?9 L  R  W, c5 k
2)简单一点,你自己定义一下这两个常量:
! ^4 j3 k! ]  [! l1 D. ~  B! R #define DOCHOSTUIFLAG_ENABLE_FORMS_AUTOCOMPLETE   0x4000
% O: L, ]5 h  D- P' G: v #define DOCHOSTUIFLAG_THEME   0x40000
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2026-8-13 22:51 , Processed in 0.017513 second(s), 15 queries .

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

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