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