Few minor issues
Harold L Hunt II
huntharo@msu.edu
Thu May 29 06:22:00 GMT 2003
Earle,
Earle F. Philhower III wrote:
>> I looked for the code that does this (it is general X code, not
>> Cygwin/XFree86-specific code) the last time that someone brought this
>> up (wasn't it you?). I could not find the code and I won't be looking
>> for it again. Someone else can do the searching of the source code
>> tree under xc/programs/Xserver to try to find it. It is most likely
>> in xc/programs/Xserver/hw/os or xc/programs/Xserver/hw/dix, but I
>> couldn't find it in either of those directories.
>
> Well, you could always throw out the 1st cursor positioning call since
> it is guaranteed
> to be from the X server itself and not an application. That way you do
> not have to modify
> any of the standard X server code, just the xwin/ directory files...
>
Damn, that is a good idea! It would certainly do the trick and I don't
think it is incorrect at all. We would simply need a static to flag
that we had dumped that mouse positioning message.
Nice idea.
The only problem is that I have already uploade this test release. I am
just finishing up the change log now... bummer it won't make it for this
release. Remind me if I forget next time.
>>> ...To hide from taskbar we may be able to use WS_EX_TOOLWINDOW flag
>>> for EXSTYLE attribute.
>>> I am attaching an example for this.
>>> Hiding from the taskbar? It isn't shown on my taskbar. I am using
>>> Windows XP... what version are you using?
>
>
> It doesn't show up under W2K either.
Good to know.
>
>> I also noticed that an already existing exit dialog was not being
>> brought to the foreground when the user performed another action that
>> would display the dialog. The result was that the dialog box seemed
>> to be lost and it seemed that you couldn't exit Cygwin/XFree86. I
>> changed this to call SetForegroundWindow () for the dialog box when it
>> already exists. This brings it to the top in response to such
>> user-generated events.
>> Any ideas on how to get rid of the Maximize button on the dialog? I
>> can do it by removing the WS_SYSMENU style... should we be using
>> WS_SYSMENU or not? Not using WS_SYSMENU cause our icon to not be
>> displayed on the upper-left hand corner, but I can't seem to find a
>> flag that says "no maximize button".
>
>
> This is just stylistic on my part, but why not just use a MessageBox?
Ah ha... at first that seems like a good idea. Then you try it and we
end up borking Cygwin/XFree86 because Windows messages are processed in
the wakeup/pre-blocking handlers in the X Server main loop. Thus, a
block here is a death knell to any X Clients that are connected. Of
course, you could spawn a thread to create the MessageBox, but that
kinda defeats the whole purpose of using a MessageBox.
The nice thing about the type of dialog box we have is that it is
non-blocking and it gets its messages via our own message loop that is
processed in the wakeup/pre-blocking handlers as I said above.
> Other
> apps use one with MB_APPLMODAL when you're about to exit from them...
>
> Here's what you need to do to get your exit dialog without the max/min
> buttons
> /* Create dialog box */
> g_hDlgExit = CreateDialogParam (g_hInstance, ...
>
> + SetWindowLong( g_hDlgExit, GWL_STYLE, GetWindowLong(g_hDlgExit,
> GWL_STYLE)&~(WS_MAXIMIZEBOX|WS_MINIMIZEBOX) );
> + SetWindowLong( g_hDlgExit, GWL_EXSTYLE, GetWindowLong(g_hDlgExit,
> GWL_EXSTYLE)&~WS_EX_APPWINDOW );
> + SetWindowPos( g_hDlgExit, 0, 0, 0, 0, 0,
> SWP_FRAMECHANGED|SWP_NOMOVE|SWP_NOZORDER|SWP_NOSIZE );
>
> /* Show the dialog box */
> ShowWindow (g_hDlgExit, SW_SHOW);
>
Very nice. I will play with that tomorrow.
Harold
More information about the Cygwin-xfree
mailing list