Modern Windows GUI visual styles
Eric Suen
eric.suen.tech at gmail.com
Wed Sep 9 19:21:34 PDT 2009
Hi,
Take a look Windows API: CreateActCtx, ActivateActCtx, DeactivateActCtx and
ReleaseActCtx and the struct ACTCTX
You still need a manifest file, but that file can generate by program, and
you can turn on/off the XP theme.
"ACTCTX.lpSource Null-terminated string specifying the path of the manifest
file or PE image to be used to create the activation context. If this path
refers to an EXE or DLL file, the lpResourceName member is required."
The attachment is the cpp code I wrote for Java...
Regards,
Eric Suen
> Recently I spent a few hours to find a way to enable a new styles of
> Windows XP controls from the code (without manual created external
> manifest files, resource files, ...). The only solution I found in DFL
> library and it looks quite complicated.
>
> Maybe should create that function at the level of the compiler or linker?
begin 666 spket.cpp
M(V1E9FEN92!?5TE.,S)?5TE.3E0@,'@P-3$P#0H-"B-I;F-L=61E(#QW:6YD
M;W=S+F@^#0HC:6YC;'5D92 \<VAL=V%P:2YH/@T*#0HC:6YC;'5D92 B<W!K
M971?:FYI+F at B#0HC:6YC;'5D92 B<F5S;W5R8V4N:"(-"@T*<W1A=&EC($A)
M3E-404Y#12!S<&ME=%]H86YD;&4@/2!.54Q,.PT*#0IE>'1E<FX@(D,B('L-
M"@T*(V1E9FEN92!34$M%5%]&54,H<F,L(&9U;F,I($I.24584$]25"!R8R!*
M3DE#04Q,($IA=F%?8V]M7W-P:V5T7VEN=&5R;F%L7W=I;C,R7U1H96UE(R-F
M=6YC#0H-"B-D969I;F4 at 0T].5D525"AA='EP92P at 8V%R<F%Y+"!J87)R87DI
M(%P-"B @871Y<&4 at 8V%R<F%Y(#T at 3E5,3#L at 7 T*("!I9B H:F%R<F%Y*2!I
M9B H*&-A<G)A>2 ]("AA='EP92D at 96YV+3Y'9710<FEM:71I=F5!<G)A>4-R
M:71I8V%L*&IA<G)A>2P at 2DY)7T9!3%-%*2D@/3T at 3E5,3"D at 9V]T;R!D;VYE
M.PT*( T*(V1E9FEN92!214Q%05-%*&IA<G)A>2P at 8V%R<F%Y*2!I9B H:F%R
M<F%Y("8F(&-A<G)A>2D at 96YV+3Y296QE87-E4')I;6ET:79E07)R87E#<FET
M:6-A;"AJ87)R87DL(&-A<G)A>2P at 2DY)7T%"3U)4*3L-"B-D969I;F4 at 4D5,
M14%315]#3U!9*&IA<G)A>2P at 8V%R<F%Y*2!I9B H:F%R<F%Y("8F(&-A<G)A
M>2D at 96YV+3Y296QE87-E4')I;6ET:79E07)R87E#<FET:6-A;"AJ87)R87DL
M(&-A<G)A>2P@,"D[#0H-"G1Y<&5D968 at 2$%.1$Q%("A*3DE#04Q,("I#<F5A
M=&5!8W1#='A74')O8RDH4$%#5$-46%<I.PT*='EP961E9B!(04Y$3$4@*$I.
M24-!3$P@*D-R96%T94%C=$-T>$%0<F]C*2A004-40U1802D[#0IT>7!E9&5F
M($)/3TP@*$I.24-!3$P@*D%C=&EV871E06-T0W1X4')O8RDH2$%.1$Q%+"!5
M3$].1U]05%(J*3L-"G1Y<&5D968 at 0D]/3" H2DY)0T%,3" J1&5A8W1I=F%T
M94%C=$-T>%!R;V,I*$173U)$+"!53$].1U]05%(I.PT*='EP961E9B!V;VED
M("A*3DE#04Q,("I296QE87-E06-T0W1X4')O8RDH2$%.1$Q%*3L-"@T*4U!+
M151?1E5#*&IB;V]L96%N+"!?86-T:79E5&AE;6EN9RD-"B @*$I.245N=B J
M96YV+"!J8VQA<W,L(&IB;V]L96%N(&ES56YI8V]D92P@:FEN=$%R<F%Y(&-T
M>$%R<F%Y*0T*>PT*"4A)3E-404Y#12!T:&5M94QI8B ]($QO861,:6)R87)Y
M*")5>%1H96UE(BD[#0H):68@*'1H96UE3&EB(#T]($Y53$PI#0H)"7)E='5R
M;B!*3DE?1D%,4T4[#0H)"0T*"49R965,:6)R87)Y*'1H96UE3&EB*3L-"@D-
M"@DO+TES5&AE;65!8W1I=F4@)B8 at 27-!<'!4:&5M960@;F]T('=O<FL at 87,@
M97AP96-T960-"@E"3T],(&ES07!P5&AE;65D(#T at 1D%,4T4[#0H)2$E.4U1!
M3D-%(&-O;6-T3&EB(#T at 3&]A9$QI8G)A<GDH(D-O;6-T;#,R(BD[#0H):68@
M*&-O;6-T3&EB("$]($Y53$PI('L-"@D)1$Q,1T545D524TE/3E!23T, at 9&QL
M4')O8R ]("A$3$Q'151615)324].4%)/0RD at 1V5T4')O8T%D9')E<W,H8V]M
M8W1,:6(L(")$;&Q'971697)S:6]N(BD[#0H)"6EF("AD;&Q0<F]C("$]($Y5
M3$PI('L-"@D)"41,3%9%4E-)3TY)3D9/('9E<DEN9F\[#0H)"0E:97)O365M
M;W)Y*"9V97));F9O+"!S:7IE;V8H=F5R26YF;RDI.PT*"0D)=F5R26YF;RYC
M8E-I>F4@/2!S:7IE;V8H=F5R26YF;RD[#0H)"0E(4D5354Q4(&AR(#T at 9&QL
M4')O8R at F=F5R26YF;RD[#0H)"0EI9B H4U5#0T5%1$5$*&AR*2 F)B!V97))
M;F9O+F1W36%J;W)697)S:6]N(#X](#8I('L-"@D)"0EI<T%P<%1H96UE9" ]
M(%12544[#0H)"0E]#0H)"7T-"@D)1G)E94QI8G)A<GDH8V]M8W1,:6(I.PT*
M"7T-"@D-"@E"3T],(')C(#T at 1D%,4T4[#0H):68@*&ES07!P5&AE;65D(#T]
M($9!3%-%*2![#0H)"4173U)$(&Y3:7IE(#T@,#L-"@D)2$%.1$Q%*B!H06-T
M0W1X(#T at 3E5,3#L-"@D)54Q/3D=?4%12*B!U;'!!8W1I=F%T:6]N0V]O:VEE
M(#T at 3E5,3#L-"@D)#0H)"4A)3E-404Y#12!K97)N96P@/2!,;V%D3&EB<F%R
M>2 at B2V5R;F5L,S(B*3L-"@D):68@*&ME<FYE;" ]/2!.54Q,*0T*"0D)<F5T
M=7)N($I.25]&04Q313L-"@D)"0T*"0EH06-T0W1X(#T@;F5W($A!3D1,13L-
M"@D)*FA!8W1#='@@/2!)3E9!3$E$7TA!3D1,15]604Q513L-"@D)=6QP06-T
M:79A=&EO;D-O;VMI92 ](&YE=R!53$].1U]05%([#0H)"0T*"0E!8W1I=F%T
M94%C=$-T>%!R;V, at 86-T:79A=&5!8W1#='A0<F]C(#T@*$%C=&EV871E06-T
M0W1X4')O8RD at 1V5T4')O8T%D9')E<W,H:V5R;F5L+" B06-T:79A=&5!8W1#
M='@B*3L-"@D):68@*&%C=&EV871E06-T0W1X4')O8R A/2!.54Q,*2O8RD at 1V5T4')O8T%D
M9')E<W,H:V5R;F5L+" B0W)E871E06-T0W1X5R(I.PT*"0D)"6EF("AC<F5A
M=&5!8W1#='A0<F]C("$]($Y53$PI('L-"@D)"0D)04-40U185R!A8W1C='@[
M#0H)"0D)"4173U)$(&QE;F=T:" ]($U!6%]0051(.PT*"0D)"0E70TA!4B!F
M:6QE;F%M95M-05A?4$%42%T[#0H)"0D)"4Q05U-44B!L<$9I;&5N86UE(#T@
M9FEL96YA;64[#0H)"0D)"0T*"0D)"0ED;R"0D)"0EI9B H;E-I>F4@/"!L96YG=&@I#0H)"0D)"0D)8G)E
M86L[#0H)"0D)"0D-"@D)"0D)"6Y3:7IE(#T@,#L-"@D)"0D)"6EF("AL<$9I
M;&5N86UE("$](&9I;&5N86UE*0T*"0D)"0D)"61E;&5T95M=(&QP1FEL96YA
M;64[#0H)"0D)"0D)#0H)"0D)"0EL96YG=&@@*ST at 34%87U!!5$@[#0H)"0D)
M"0EL<$9I;&5N86UE(#T@;F5W(%=#2$%26VQE;F=T:%T[#0H)"0D)"0EI9B H
M;'!&:6QE;F%M92 ]/2!.54Q,*0T*"0D)"0D)"6)R96%K.PT*"0D)"0E]('=H
M:6QE("AT<G5E*3L-"@D)"0D)#0H)"0D)"6EF("AN4VEZ92 ^(# I('L-"@D)
M"0D)"6UE;7-E="@F86-T8W1X+" P+"!S:7IE;V8H86-T8W1X*2D[#0H)"0D)
M"0EA8W1C='@N8V)3:7IE(#T@<VEZ96]F*&%C=&-T>"D[#0H)"0D)"0EA8W1C
M='@N;'!3;W5R8V4@/2!L<$9I;&5N86UE.PT*"0D)"0D)86-T8W1X+F1W1FQA
M9W,@/2!!0U1#5%A?1DQ!1U]215-/55)#15].04U%7U9!3$E$.PT*"0D)"0D)
M86-T8W1X+FQP4F5S;W5R8V5.86UE(#T at 34%+14E.5%)%4T]54D-%5RA-04Y)
M1D535%])1"D[#0H)"0D)"0DJ:$%C=$-T>" ](&-R96%T94%C=$-T>%!R;V,H
M)F%C=&-T>"D[#0H)"0D)"7T-"@D)"0D):68@*&QP1FEL96YA;64@(3T at 3E5,
M3" F)B!L<$9I;&5N86UE("$](&9I;&5N86UE*0T*"0D)"0D)9&5L971E6UT@
M;'!&:6QE;F%M93L-"@D)"0E]#0H)"0E](&5L<V4@>PT*"0D)"4-R96%T94%C
M=$-T>$%0<F]C(&-R96%T94%C=$-T>%!R;V,@/2 H0W)E871E06-T0W1X05!R
M;V,I($=E=%!R;V-!9&1R97-S*&ME<FYE;"P@(D-R96%T94%C=$-T>$$B*3L-
M"@D)"0EI9B H8W)E871E06-T0W1X4')O8R A/2!.54Q,*2![#0H)"0D)"4%#
M5$-46$$@86-T8W1X.PT*"0D)"0E$5T]21"!L96YG=&@@/2!-05A?4$%42#L-
M"@D)"0D)8VAA<B!F:6QE;F%M95M-05A?4$%42%T[#0H)"0D)"6-H87(J(&QP
M1FEL96YA;64@/2!F:6QE;F%M93L-"@D)"0D)#0H)"0D)"61O('L-"@D)"0D)
M"6Y3:7IE(#T at 1V5T36]D=6QE1FEL94YA;65!*'-P:V5T7VAA;F1L92P@;'!&
M:6QE;F%M92P@;&5N9W1H*3L-"@D)"0D)"6EF("AN4VEZ92 \(&QE;F=T:"D-
M"@D)"0D)"0EB<F5A:SL-"@D)"0D)"0T*"0D)"0D);E-I>F4@/2 P.PT*"0D)
M"0D):68@*&QP1FEL96YA;64@(3T at 9FEL96YA;64I#0H)"0D)"0D)9&5L971E
M6UT@;'!&:6QE;F%M93L-"@D)"0D)"0D-"@D)"0D)"6QE;F=T:" K/2!-05A?
M4$%42#L-"@D)"0D)"6QP1FEL96YA;64@/2!N97<@8VAA<EML96YG=&A=.PT*
M"0D)"0D):68@*&QP1FEL96YA;64@/3T at 3E5,3"D-"@D)"0D)"0EB<F5A:SL-
M"@D)"0D)?2!W:&EL92 H=')U92D[#0H)"0D)"0T*"0D)"0EI9B H;E-I>F4@
M/B P*2![#0H)"0D)"0EM96US970H)F%C=&-T>"P@,"P@<VEZ96]F*&%C=&-T
M>"DI.PT*"0D)"0D)86-T8W1X+F-B4VEZ92 ]('-I>F5O9BAA8W1C='@I.PT*
M"0D)"0D)86-T8W1X+FQP4V]U<F-E(#T@;'!&:6QE;F%M93L-"@D)"0D)"6%C
M=&-T>"YD=T9L86=S(#T at 04-40U187T9,04=?4D533U520T5?3D%-15]604Q)
M1#L-"@D)"0D)"6%C=&-T>"YL<%)E<V]U<F-E3F%M92 ]($U!2T5)3E1215-/
M55)#14$H34%.249%4U1?240I.PT*"0D)"0D)*FA!8W1#='@@/2!C<F5A=&5!
M8W1#='A0<F]C*"9A8W1C='@I.PT*"0D)"0E]#0H)"0D)"6EF("AL<$9I;&5N
M86UE("$]($Y53$P@)B8@;'!&:6QE;F%M92 A/2!F:6QE;F%M92D-"@D)"0D)
M"61E;&5T95M=(&QP1FEL96YA;64[#0H)"0D)?0T*"0D)?0T*"0D-"@D)"6EF
M("@J:$%C=$-T>" A/2!)3E9!3$E$7TA!3D1,15]604Q512D@>PT*"0D)"7)C
M(#T at 86-T:79A=&5!8W1#='A0<F]C*"IH06-T0W1X+"!U;'!!8W1I=F%T:6]N
M0V]O:VEE*3L-"@D)"0EI9B H<F,@/3T at 5%)512D@>PT*"0D)"0E#3TY615)4
M*&II;G0J+"!C='@L(&-T>$%R<F%Y*0T*"0D)"0D-"@D)"0D)8W1X6S!=(#T@
M<F5I;G1E<G!R971?8V%S=#QJ:6YT/BAH06-T0W1X*3L-"@D)"0D)8W1X6S%=
M(#T@<F5I;G1E<G!R971?8V%S=#QJ:6YT/BAU;'!!8W1I=F%T:6]N0V]O:VEE
M*3L-"@D)"0D)#0H)"0D)9&]N93H-"@D)"0D)4D5,14%315]#3U!9*&-T>$%R
M<F%Y+"!C='@I#0H)"0D)?2!E;'-E('L at +R\@<F5L96%S90T*"0D)"0E296QE
M87-E06-T0W1X4')O8R!R96QE87-E06-T0W1X4')O8R ]("A296QE87-E06-T
M0W1X4')O8RD at 1V5T4')O8T%D9')E<W,H:V5R;F5L+" B4F5L96%S94%C=$-T
M>"(I.PT*"0D)"0EI9B H<F5L96%S94%C=$-T>%!R;V,@(3T at 3E5,3"D-"@D)
M"0D)"7)E;&5A<V5!8W1#='A0<F]C*"IH06-T0W1X*3L-"@D)"0E]#0H)"0E]
M#0H)"7T-"@D)#0H)"49R965,:6)R87)Y*&ME<FYE;"D[#0H)?2!E;'-E('L-
M"@D)<F,@/2!44E5%.PT*"7T-"@D-"@ER971U<FX@*')C(#\@2DY)7U12544@
M.B!*3DE?1D%,4T4I.PT*?0T*#0I34$M%5%]&54,H:F)O;VQE86XL(%]D96%C
M=&EV951H96UI;F<I#0H@("A*3DE%;G8@*BP@:F-L87-S+"!J:6YT(&AA;F1L
M92P@:FEN="!C;V]K:64I#0I[#0H):68@*&AA;F1L92D@>PT*"0E(24Y35$%.
M0T4@:V5R;F5L(#T at 3&]A9$QI8G)A<GDH(DME<FYE;#,R(BD[#0H)"6EF("AK
M97)N96P@/3T at 3E5,3"D-"@D)"7)E='5R;B!*3DE?1D%,4T4[#0H)"0D-"@D)
M2$%.1$Q%*B!H06-T0W1X(#T@<F5I;G1E<G!R971?8V%S=#Q(04Y$3$4J/BAH
M86YD;&4I.PT*"0E53$].1U]05%(J('5L<$%C=&EV871I;VY#;V]K:64@/2!R
M96EN=&5R<')E=%]C87-T/%5,3TY'7U!44BH^*&-O;VMI92D[#0H)"41E86-T
M:79A=&5!8W1#='A0<F]C(&1E86-T:79A=&5!8W1#='A0<F]C(#T@*$1E86-T
M:79A=&5!8W1#='A0<F]C*2!'9710<F]C061D<F5S<RAK97)N96PL(")$96%C
M=&EV871E06-T0W1X(BD[#0H)"6EF("AD96%C=&EV871E06-T0W1X4')O8R A
M/2!.54Q,*2![#0H)"0ED96%C=&EV871E06-T0W1X4')O8R at P+" J=6QP06-T
M:79A=&EO;D-O;VMI92D[#0H)"0D-"@D)"5)E;&5A<V5!8W1#='A0<F]C(')E
M;&5A<V5!8W1#='A0<F]C(#T@*%)E;&5A<V5!8W1#='A0<F]C*2!'9710<F]C
M061D<F5S<RAK97)N96PL(")296QE87-E06-T0W1X(BD[#0H)"0EI9B H<F5L
M96%S94%C=$-T>%!R;V,@(3T at 3E5,3"D-"@D)"0ER96QE87-E06-T0W1X4')O
M8R at J:$%C=$-T>"D[#0H)"7T-"@D)#0H)"49R965,:6)R87)Y*&ME<FYE;"D[
M#0H)"0T*"0ED96QE=&4@:$%C=$-T>#L-"@D)9&5L971E('5L<$%C=&EV871I
M;VY#;V]K:64[#0H)?0T*"0T*"7)E='5R;B!*3DE?5%)513L-"GT-"@T*0D]/
M3"!!4$E%3E1262!$;&Q-86EN("A(24Y35$%.0T4@:$EN<W0L#0H@(" @(" @
M(" @(" @(" @(" @(" @($173U)$(')E87-O;BP-"B @(" @(" @(" @(" @
M(" @(" @(" @3%!63TE$(')E<V5R=F5D*0T*>PT*"7-P:V5T7VAA;F1L92 ]
M(&A);G-T.PT*"0T*"7)E='5R;B!44E5%.PT*?0T*#0HO*@T*<W1A=&EC(&)O
M;VP at 27-4:&5M95-U<'!O<G0H*0T*>PT*"6EF("AT:&5M95]S=&%T=7,@/3T@
M,"D@>PT*"0ET:&5M95]S=&%T=7,@/2 Q.PT*"0E(24Y35$%.0T4@=&AE;64@
M/2!,;V%D3&EB<F%R>2 at B57A4:&5M92(I.PT*"0EI9B H=&AE;64@(3T at 3E5,
M3"D@>PT*"0D)=&AE;65?<W1A='5S(#T@,CL-"@D)"49R965,:6)R87)Y*'1H
M96UE*3L-"@D)?0T*"7T-"@D-"@ER971U<FX@*'1H96UE7W-T871U<R ]/2 R
M*3L-"GT-"@T*<W1A=&EC(&)O;VP at 27-!<'!4:&5M960H*0T*>PT*"6EF("@A
M27-4:&5M95-U<'!O<G0H*2D-"@D)<F5T=7)N(&9A;'-E.PT*"0D-"@E"3T],
M(&ES07!P5&AE;65D(#T at 1D%,4T4[#0H)2$E.4U1!3D-%(&-O;6-T3&EB(#T@
M3&]A9$QI8G)A<GDH(D-O;6-T;#,R(BD[#0H):68@*&-O;6-T3&EB("$]($Y5
M3$PI('L-"@D)1$Q,1T545D524TE/3E!23T, at 9&QL4')O8R ]("A$3$Q'1516
M15)324].4%)/0RD at 1V5T4')O8T%D9')E<W,H8V]M8W1,:6(L(")$;&Q'9716
M97)S:6]N(BD[#0H)"6EF("AD;&Q0<F]C("$]($Y53$PI('L-"@D)"41,3%9%
M4E-)3TY)3D9/('9E<DEN9F\[#0H)"0E:97)O365M;W)Y*"9V97));F9O+"!S
M:7IE;V8H=F5R26YF;RDI.PT*"0D)=F5R26YF;RYC8E-I>F4@/2!S:7IE;V8H
M=F5R26YF;RD[#0H)"0E(4D5354Q4(&AR(#T at 9&QL4')O8R at F=F5R26YF;RD[
M#0H)"0EI9B H4U5#0T5%1$5$*&AR*2 F)B!V97));F9O+F1W36%J;W)697)S
M:6]N(#X](#8I('L-"@D)"0E(24Y35$%.0T4@=&AE;65,:6(@/2!,;V%D3&EB
M<F%R>2 at B57A4:&5M92(I.PT*"0D)"6EF("AT:&5M94QI8B A/2!.54Q,*2![
M#0H)"0D)"4ES5&AE;65!8W1I=F50<F]C(&%C=%!R;V,@/2 H27-4:&5M94%C
M=&EV95!R;V,I($=E=%!R;V-!9&1R97-S*'1H96UE3&EB+" B27-4:&5M94%C
M=&EV92(I.PT*"0D)"0EI9B H86-T4')O8R F)B!A8W10<F]C*"D@/3T at 5%)5
M12D@>PT*"0D)"0D)27-!<'!4:&5M9610<F]C('1H96UE9%!R;V,@/2 H27-!
M<'!4:&5M9610<F]C*2!'9710<F]C061D<F5S<RAT:&5M94QI8BP@(DES07!P
M5&AE;65D(BD[#0H)"0D)"0EI9B H=&AE;65D4')O8R A/2!.54Q,*0T*"0D)
M"0D)"6ES07!P5&AE;65D(#T@=&AE;65D4')O8R at I.PT*"0D)"0E]#0H)"0D-
M"@D)"0D)1G)E94QI8G)A<GDH=&AE;65,:6(I.PT*"0D)"7T-"@D)"7T-"@D)
M?0T*"0E&<F5E3&EB<F%R>2AC;VUC=$QI8BD[#0H)?0T*"7)E='5R;B H:7-!
M<'!4:&5M960@/3T at 5%)512 _('1R=64 at .B!F86QS92D[#0I]#0H-"G-T871I
M8R!B;V]L($5N86)L951H96UI;F<H8F]O;"!E;F%B;&4I#0I[#0H):68@*"%)
M<U1H96UE4W5P<&]R="@I*0T*"0ER971U<FX at 9F%L<V4[#0H)#0H)8F]O;"!R
M8R ](&9A;'-E.PT*"4A)3E-404Y#12!T:&5M94QI8B ]($QO861,:6)R87)Y
M*")5>%1H96UE(BD[#0H):68@*'1H96UE3&EB("$]($Y53$PI('L-"@D)16YA
M8FQE5&AE;6EN9U!R;V,@=&AE;6EN9U!R;V,@/2 H16YA8FQE5&AE;6EN9U!R
M;V,I($=E=%!R;V-!9&1R97-S*'1H96UE3&EB+" B16YA8FQE5&AE;6EN9R(I
M.PT*"0EI9B H=&AE;6EN9U!R;V,@(3T at 3E5,3"D-"@D)"7)C(#T@=&AE;6EN
M9U!R;V,H96YA8FQE(#\@5%)512 Z($9!3%-%*2 ]/2!37T]+.PT*"0D-"@D)
M1G)E94QI8G)A<GDH=&AE;65,:6(I.PT*"7T-"@D-"@ER971U<FX@<F,[#0I]
+#0HJ+PT*#0I]#0H`
`
end
More information about the Digitalmars-d
mailing list