Stefanos A. wrote:
> Την Wed, 09 Sep 2009 18:05:42 +0300,ο(η) Christian Hoff 
> <christian_h...@gmx.net> έγραψε:
>
>> I would really appreciate some feedback from the community as to whether
>> the new approach works (that is, if the attached application appears
>> with visual styles enabled). Just reply with a screenshot of the running
>> app on XP if you're not sure what I mean :-) .
>
> Didn't render with visual styles here (Vista x86 Business w/ SP2).
>
> What magic sauce is Application.DoEvents using? I wonder if it is 
> performing any static initialization (static constructors and/or fields).
>
By now I tried:

MSG msg = new MSG ();
while (Win32PeekMessage (ref msg, IntPtr.Zero, 0, 0, PM_REMOVE)) {
         Console.WriteLine ("Got a message");
          Win32TranslateMessage (ref msg);
          Win32DispatchMessage (ref msg);
}

On my Windows 7 machine, PeekMessage returns false.

Now that emulating DoEvents does not seem to fix it, I'm looking at the 
static constructor of XplatUIWin32, the class that also contains the 
"real" code for DoEvents. Besides initialization stuff, it creates a 
"foster window":

wnd_proc = new WndProc(InternalWndProc);
FosterParent=Win32CreateWindow(WindowExStyles.WS_EX_TOOLWINDOW, 
"static", "Foster Parent Window", WindowStyles.WS_OVERLAPPEDWINDOW, 0, 
0, 0, 0, IntPtr.Zero, IntPtr.Zero, IntPtr.Zero, IntPtr.Zero);

Prepending that code to the workaround should make it work. I will 
create a test app ASAP.

Thanks,


Christian
_______________________________________________
Mono-devel-list mailing list
Mono-devel-list@lists.ximian.com
http://lists.ximian.com/mailman/listinfo/mono-devel-list

Reply via email to