MS VisualBasic apps have no minimize/maximise buttons, no taskbar button - RFC, help debugging

Alex Villací­s Lasso a_villacis at palosanto.com
Mon Sep 26 14:54:23 CDT 2005


The following is a problem I have been having with every single 
VisualBasic application for some time, and I ask for your help now:

Every single VisualBasic application I have tried lacks the minimize and 
maximize buttons, even when the application is supposed to have them. In 
addition, the taskbar button is missing (on Gnome 1.4.x/Metacity 2.10.3 
under Fedora 4), so there is no way to recall the application once the 
window is obscured by another application, except by clearing the 
desktop. The applications show the buttons on the virtual desktop, and 
the problem arises only when the application uses the window manager for 
its own window. This problem was confirmed on Metacity and MWM.

As far as I can tell, this affects Visual Basic apps only. The 
applications from Wine (regedit, for example) show correct decorations, 
and so do some tools from MS Visual Studio. I modified x11drv/window.c 
to display the Windows attributes before setting hints for the window 
manager. Here is what I got:

Tested regedit (wine), depends.exe (native, MS Visual Studio), 
windiff.exe (native, MS Visual Studio), dbgridtest.exe (native, 
VisualBasic app), pruebatransparency.exe (native, VisualBasic app). 
Entries with asterisks lack min/max buttons as explained.

regedit wine
fixme:x11drv:X11DRV_set_wm_hints hwnd = 0x00010022 style = 0x04cf0200 
ex_style = 0x00000100
fixme:x11drv:displayStyles style = 0x04cf0200 WS_CLIPSIBLINGS WS_CAPTION 
WS_BORDER WS_DLGFRAME WS_SYSMENU WS_THICKFRAME WS_GROUP WS_TABSTOP 
WS_MINIMIZEBOX WS_MAXIMIZEBOX
fixme:x11drv:displayStyles ex_style = 0x00000100 WS_EX_WINDOWEDGE
fixme:x11drv:X11DRV_set_wm_hints hwnd = 0x00010028 style = 0x04c00000 
ex_style = 0x00000100
fixme:x11drv:displayStyles style = 0x04c00000 WS_CLIPSIBLINGS WS_CAPTION 
WS_BORDER WS_DLGFRAME
fixme:x11drv:displayStyles ex_style = 0x00000100 WS_EX_WINDOWEDGE
fixme:x11drv:X11DRV_set_wm_hints hwnd = 0x00010022 style = 0x14cf0200 
ex_style = 0x00000100
fixme:x11drv:displayStyles style = 0x14cf0200 WS_VISIBLE WS_CLIPSIBLINGS 
WS_CAPTION WS_BORDER WS_DLGFRAME WS_SYSMENU WS_THICKFRAME WS_GROUP 
WS_TABSTOP WS_MINIMIZEBOX WS_MAXIMIZEBOX
fixme:x11drv:displayStyles ex_style = 0x00000100 WS_EX_WINDOWEDGE

depends.exe native
fixme:x11drv:X11DRV_set_wm_hints hwnd = 0x00010026 style = 0x04cf8000 
ex_style = 0x00000100
fixme:x11drv:displayStyles style = 0x04cf8000 WS_CLIPSIBLINGS WS_CAPTION 
WS_BORDER WS_DLGFRAME WS_SYSMENU WS_THICKFRAME WS_GROUP WS_TABSTOP 
WS_MINIMIZEBOX WS_MAXIMIZEBOX
fixme:x11drv:displayStyles ex_style = 0x00000100 WS_EX_WINDOWEDGE
fixme:x11drv:X11DRV_set_wm_hints hwnd = 0x00010026 style = 0x14cf8000 
ex_style = 0x00000110
fixme:x11drv:displayStyles style = 0x14cf8000 WS_VISIBLE WS_CLIPSIBLINGS 
WS_CAPTION WS_BORDER WS_DLGFRAME WS_SYSMENU WS_THICKFRAME WS_GROUP 
WS_TABSTOP WS_MINIMIZEBOX WS_MAXIMIZEBOX
fixme:x11drv:displayStyles ex_style = 0x00000110 WS_EX_ACCEPTFILES 
WS_EX_WINDOWEDGE

windiff.exe native
fixme:x11drv:X11DRV_set_wm_hints hwnd = 0x00010022 style = 0x04cf0000 
ex_style = 0x00000100
fixme:x11drv:displayStyles style = 0x04cf0000 WS_CLIPSIBLINGS WS_CAPTION 
WS_BORDER WS_DLGFRAME WS_SYSMENU WS_THICKFRAME WS_GROUP WS_TABSTOP 
WS_MINIMIZEBOX WS_MAXIMIZEBOX
fixme:x11drv:displayStyles ex_style = 0x00000100 WS_EX_WINDOWEDGE
fixme:x11drv:X11DRV_set_wm_hints hwnd = 0x00010022 style = 0x14cf0000 
ex_style = 0x00000100
fixme:x11drv:displayStyles style = 0x14cf0000 WS_VISIBLE WS_CLIPSIBLINGS 
WS_CAPTION WS_BORDER WS_DLGFRAME WS_SYSMENU WS_THICKFRAME WS_GROUP 
WS_TABSTOP WS_MINIMIZEBOX WS_MAXIMIZEBOX
fixme:x11drv:displayStyles ex_style = 0x00000100 WS_EX_WINDOWEDGE

**** dbgridtest.exe native
fixme:x11drv:X11DRV_set_wm_hints hwnd = 0x00010022 style = 0x04c00000 
ex_style = 0x00000100
fixme:x11drv:displayStyles style = 0x04c00000 WS_CLIPSIBLINGS WS_CAPTION 
WS_BORDER WS_DLGFRAME
fixme:x11drv:displayStyles ex_style = 0x00000100 WS_EX_WINDOWEDGE
fixme:x11drv:X11DRV_set_wm_hints hwnd = 0x00010024 style = 0x84090000 
ex_style = 0x00000080
fixme:x11drv:displayStyles style = 0x84090000 WS_POPUP WS_CLIPSIBLINGS 
WS_SYSMENU WS_TABSTOP WS_MAXIMIZEBOX
fixme:x11drv:displayStyles ex_style = 0x00000080 WS_EX_TOOLWINDOW
fixme:x11drv:X11DRV_set_wm_hints hwnd = 0x00010028 style = 0x84000000 
ex_style = 0x00000000
fixme:x11drv:displayStyles style = 0x84000000 WS_POPUP WS_CLIPSIBLINGS
fixme:x11drv:displayStyles ex_style = 0x00000000
fixme:x11drv:X11DRV_set_wm_hints hwnd = 0x0001002c style = 0x06cf0000 
ex_style = 0x00040100
fixme:x11drv:displayStyles style = 0x06cf0000 WS_CLIPSIBLINGS 
WS_CLIPCHILDREN WS_CAPTION WS_BORDER WS_DLGFRAME WS_SYSMENU 
WS_THICKFRAME WS_GROUP WS_TABSTOP WS_MINIMIZEBOX WS_MAXIMIZEBOX
fixme:x11drv:displayStyles ex_style = 0x00040100 WS_EX_WINDOWEDGE 
WS_EX_APPWINDOW
fixme:x11drv:X11DRV_set_wm_hints hwnd = 0x0001002c style = 0x16cf0000 
ex_style = 0x00040100
fixme:x11drv:displayStyles style = 0x16cf0000 WS_VISIBLE WS_CLIPSIBLINGS 
WS_CLIPCHILDREN WS_CAPTION WS_BORDER WS_DLGFRAME WS_SYSMENU 
WS_THICKFRAME WS_GROUP WS_TABSTOP WS_MINIMIZEBOX WS_MAXIMIZEBOX
fixme:x11drv:displayStyles ex_style = 0x00040100 WS_EX_WINDOWEDGE 
WS_EX_APPWINDOW

**** pruebatransparency.exe native
fixme:x11drv:X11DRV_set_wm_hints hwnd = 0x00010022 style = 0x04c00000 
ex_style = 0x00000100
fixme:x11drv:displayStyles style = 0x04c00000 WS_CLIPSIBLINGS WS_CAPTION 
WS_BORDER WS_DLGFRAME
fixme:x11drv:displayStyles ex_style = 0x00000100 WS_EX_WINDOWEDGE
fixme:x11drv:X11DRV_set_wm_hints hwnd = 0x00010024 style = 0x84090000 
ex_style = 0x00000080
fixme:x11drv:displayStyles style = 0x84090000 WS_POPUP WS_CLIPSIBLINGS 
WS_SYSMENU WS_TABSTOP WS_MAXIMIZEBOX
fixme:x11drv:displayStyles ex_style = 0x00000080 WS_EX_TOOLWINDOW
fixme:x11drv:X11DRV_set_wm_hints hwnd = 0x00010028 style = 0x84000000 
ex_style = 0x00000000
fixme:x11drv:displayStyles style = 0x84000000 WS_POPUP WS_CLIPSIBLINGS
fixme:x11drv:displayStyles ex_style = 0x00000000
fixme:x11drv:X11DRV_set_wm_hints hwnd = 0x0001002c style = 0x06cf0000 
ex_style = 0x00040100
fixme:x11drv:displayStyles style = 0x06cf0000 WS_CLIPSIBLINGS 
WS_CLIPCHILDREN WS_CAPTION WS_BORDER WS_DLGFRAME WS_SYSMENU 
WS_THICKFRAME WS_GROUP WS_TABSTOP WS_MINIMIZEBOX WS_MAXIMIZEBOX
fixme:x11drv:displayStyles ex_style = 0x00040100 WS_EX_WINDOWEDGE 
WS_EX_APPWINDOW
fixme:x11drv:X11DRV_set_wm_hints hwnd = 0x0001002c style = 0x16cf0000 
ex_style = 0x00040100
fixme:x11drv:displayStyles style = 0x16cf0000 WS_VISIBLE WS_CLIPSIBLINGS 
WS_CLIPCHILDREN WS_CAPTION WS_BORDER WS_DLGFRAME WS_SYSMENU 
WS_THICKFRAME WS_GROUP WS_TABSTOP WS_MINIMIZEBOX WS_MAXIMIZEBOX
fixme:x11drv:displayStyles ex_style = 0x00040100 WS_EX_WINDOWEDGE 
WS_EX_APPWINDOW

 From what I can tell, VisualBasic apps have an odd pattern of window 
initialization. The very first window in the other C/C++ apps is also 
the one to be set with a WS_VISIBLE style, but this is not the case for 
VisualBasic apps. However, I am unable to tell if this is relevant to 
the issue.

Thanks for your attention.

Alex Villacís Lasso




More information about the wine-devel mailing list