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

IE控件的XP风格化问题

[复制链接]
发表于 2007-3-3 14:51:45 | 显示全部楼层 |阅读模式
IE控件是否支持XP的Theme,说白了只是一个标记(Flag)而已。) O/ h% P& R" C
如果你使用了ATL的CAxWindow,那么打开Theme支持,只需要:1 ]: a( J1 s+ x. z
( A, r7 A( i" U% j" p4 T
   CAxWindow m_ax; // 创建的IE控件。
" d4 p) d( V- E# J7 }& x # v2 r# u" i! N$ Y
   CComPtr<IAxWinAmbientDispatch> spHost;
  q% O6 V! ^, X# m' R) {   m_ax.QueryHost(&spHost);3 U. e7 p2 a" ~$ w2 f& b1 }
   spHost->put_DocHostFlags(
. Q# N2 R: Y, k6 l7 N# u  y       DOCHOSTUIFLAG_NO3DBORDER | - R' m; ]1 O! L! j+ e& @, Y- x
       DOCHOSTUIFLAG_ENABLE_FORMS_AUTOCOMPLETE | DOCHOSTUIFLAG_THEME);9 q/ q1 _' q$ U) i: g+ [) X8 B- }
/ x- W# R! G6 f# ~! ^
其中我们最关心的是DOCHOSTUIFLAG_THEME标记,它表示我们希望打开XP的Theme支持。另一个重要的标志是DOCHOSTUIFLAG_ENABLE_FORMS_AUTOCOMPLETE,它表示我们希望IE中的Form支持AutoComplete(自动完成)功能。
& W+ k; a7 H: d  f' p& q# v
6 t9 F7 `& K: v4 K- e5 h8 u如果你没有用ATL,那么事情就要麻烦一点。你需要实现IDocHostUIHandler接口(关于该接口的前因后果,参考msdn),注意其中的GetHostInfo方法,它要求返回一个DOCHOSTUIINFO。该结构体中的成员dwFlags,就是ATL中IAxWinAmbientDispatch接口中的DocHostFlags属性。
7 N) p3 k. S# o / `! {0 o! C' S& D3 @7 O/ J8 @; K$ _
另外有个需要一提的细节是,如果你使用VC6,并且没有更新过Platform SDK,那么你很可能没有DOCHOSTUIFLAG_ENABLE_FORMS_AUTOCOMPLETE、DOCHOSTUIFLAG_THEME常量。解决方案有二: 7 B  L! q5 V" `" D0 o0 ?3 p& A

, C- J4 C0 T( X3 D1)安装一个新的Platform SDK,替换掉VC6默认的。$ g9 n' w8 o* i  I( L
2)简单一点,你自己定义一下这两个常量:
( E" `1 o/ X" n' |/ c2 ^ #define DOCHOSTUIFLAG_ENABLE_FORMS_AUTOCOMPLETE   0x4000
( Y1 n- w0 Z! q$ ^: X #define DOCHOSTUIFLAG_THEME   0x40000
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2025-9-30 11:09 , Processed in 0.036657 second(s), 15 queries .

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

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