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

IE控件的XP风格化问题

[复制链接]
发表于 2007-3-3 14:51:45 | 显示全部楼层 |阅读模式
IE控件是否支持XP的Theme,说白了只是一个标记(Flag)而已。3 F: A& ?$ Z) p) A4 L  H
如果你使用了ATL的CAxWindow,那么打开Theme支持,只需要:; |( K$ j7 _. ]9 j8 C
! y: ?% w# {# I$ a  `  ?
   CAxWindow m_ax; // 创建的IE控件。) \! A9 e) g9 f6 H! N
( d+ z# Z2 l# O9 g1 {
   CComPtr<IAxWinAmbientDispatch> spHost;: p  u9 K: j% t. v& }  J5 v5 t% C
   m_ax.QueryHost(&spHost);
3 T- e; Y, U* u7 a4 g$ U5 O   spHost->put_DocHostFlags(
/ o1 j. |$ s, d% I% ?       DOCHOSTUIFLAG_NO3DBORDER | * J$ A. L2 n$ z
       DOCHOSTUIFLAG_ENABLE_FORMS_AUTOCOMPLETE | DOCHOSTUIFLAG_THEME);, ~1 W9 t: |0 I; q  L
  @, t* h( u6 n6 a/ M
其中我们最关心的是DOCHOSTUIFLAG_THEME标记,它表示我们希望打开XP的Theme支持。另一个重要的标志是DOCHOSTUIFLAG_ENABLE_FORMS_AUTOCOMPLETE,它表示我们希望IE中的Form支持AutoComplete(自动完成)功能。
" F* ]0 V) N6 W9 C4 x
2 a, t" J. ^9 G3 y5 I- i如果你没有用ATL,那么事情就要麻烦一点。你需要实现IDocHostUIHandler接口(关于该接口的前因后果,参考msdn),注意其中的GetHostInfo方法,它要求返回一个DOCHOSTUIINFO。该结构体中的成员dwFlags,就是ATL中IAxWinAmbientDispatch接口中的DocHostFlags属性。* P# N- A9 s7 v' D# R" T1 }% _

: h& K( Q8 N" c$ Z另外有个需要一提的细节是,如果你使用VC6,并且没有更新过Platform SDK,那么你很可能没有DOCHOSTUIFLAG_ENABLE_FORMS_AUTOCOMPLETE、DOCHOSTUIFLAG_THEME常量。解决方案有二:
8 @1 w" V/ N8 K' H
3 ^4 y/ p+ Q2 n  Z% k& B8 Q1)安装一个新的Platform SDK,替换掉VC6默认的。, K' [0 O( _4 @) H0 f% t( m
2)简单一点,你自己定义一下这两个常量:
; ^5 X: \% n* R9 \ #define DOCHOSTUIFLAG_ENABLE_FORMS_AUTOCOMPLETE   0x4000
; ~  W7 C( u4 b, Y% o1 ~ #define DOCHOSTUIFLAG_THEME   0x40000
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2026-6-18 10:18 , Processed in 0.019211 second(s), 15 queries .

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

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