On Thu, 23 Apr 2009, Rob May wrote:
> 2009/4/23 Jan Dubois <j...@activestate.com>:
>> Interesting.  I don't quite understand how this would work though, as
>> the names of the controls are registered globally, so I don't see how
>> you could mix old and new style controls inside a single process.
>
> I'm not going to pretend that I understand it all either, but it's
> certainly possible for a process to load both v5 and v6 controls and
> use both - I suspect that if one was to understand activation contexts
> in detail it's possible to have both sorts of contro; within the same
> window - not that I can think of a reason for doing that!
>
> My starting point was this documentation:
> http://msdn.microsoft.com/en-us/library/ms997646.aspx
>
>> Could you find a link to some documentation about this so I can
>> understand how this is supposed to work?
>
> Per application: SetThemeAppProperties -
> http://msdn.microsoft.com/en-us/library/bb759825(VS.85).aspx Per
> window: SetWindowTheme -
> http://msdn.microsoft.com/en-us/library/bb759827(VS.85).aspx

Ok, I see.  You would not be missing v5 and v6 style controls; all
controls will be from v6, but you would disable the styling, so they
would still look like the old style.  But any changes in the message
handling of the controls would still be there.  But I think this
should be good enough.

So I think perl.exe should change the manifest to always request
v6 style controls, and then the Win32 module could add a function
to call SetThemeAppProperties() to switch off theming if an
application wants to do this.  This way the function would be
generally available for all users, even if the specific GUI
toolkit (e.g. Perl/Tk, or gTk, or wxPerl or Tkx or whatever
doesn't provide access to it).

Since you said you wanted to provide access to the theming APIs
in Win32-GUI in the future: these APIs are all in the uxtheme.dll,
which only exists on Windows XP and later.  Therefore you must not
link against uxtheme.lib if you want the module to continue to work
on Windows 2000; instead you need to do the LoadLibrary/GetProcAddress
dance, or put the calls into a separate XS file that is only loaded
on XP and later.

Cheers,
-Jan


------------------------------------------------------------------------------
Crystal Reports &#45; New Free Runtime and 30 Day Trial
Check out the new simplified licensign option that enables unlimited
royalty&#45;free distribution of the report engine for externally facing 
server and web deployment.
http://p.sf.net/sfu/businessobjects
_______________________________________________
Perl-Win32-GUI-Users mailing list
Perl-Win32-GUI-Users@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/perl-win32-gui-users
http://perl-win32-gui.sourceforge.net/

Reply via email to