I need to reduce the screen space taken up by a certain 3rd party program, and was hoping to do this by reducing the thickness of the frame surrounding the window, perhaps reducing it all the way to zero.
I need to preserve the caption of the window, so the user can access the system menu and grab the caption to slide the window around.
I was hoping to find some clever "SetWindowLongA" dll call, but so far no luck.
Anyone know a trick for this?
TIA,
Kirby
You can get the height of a window title bar using WinMetrics option 4. WinMetrics options 7 & 8 can GET the width/height of dialog box frames.
I perused the list of window styles and didn't find anything useful: http://msdn.microsoft.com/en-us/library/windows/desktop/ms632600(v=vs.85).aspx and http://msdn.microsoft.com/en-us/library/windows/desktop/ff700543(v=vs.85).aspx.
As I understand it the window border size is a global setting in windows: http://www.sevenforums.com/tutorials/6283-borders-changing-width-suite-your-needs.html.
Take a look at the SysParamInfo option 6: SetBorder - Sets the border multiplier factor that determines the width of a window's sizing border.
Apparently you can also set this value in the registry:
http://www.howtogeek.com/130138/how-to-change-the-window-border-size-in-windows-8/
Any one else?
yeah, I was afraid of that. Seems like removing the caption (top bar) of a window is a cinch, but getting rid of the surrounding border is a whole nother thing... rats.
Don't know if you can get the desired frame you want by playing around with various style values in this, but here it is anyway...
#DefineFunction WinStyleTest(title);Use at own risk.. some styles may stop your window working properly
;see http://msdn.microsoft.com/en-us/library/windows/desktop/ms633591(v=vs.85).aspx
;see http://msdn.microsoft.com/en-us/library/windows/desktop/ms632600(v=vs.85).aspx
GWL_STYLE = -16
GWL_EXSTYLE = -20
WS_OVERLAPPED = 0;Same as WS_TILED You could almost think of this as the generic default window for most applications.. It has a Title bar and a Border
WS_BORDER = 8388608
WS_CAPTION = 12582912
WS_DLGFRAME = 4194304
WS_SIZEBOX = 262144;Same as WS_THICKFRAME
WS_HSCROLL = 1048576
WS_VSCROLL = 2097152
WS_EX_CLIENTEDGE = 512
WS_EX_DLGMODALFRAME = 1
WS_EX_STATICEDGE = 131072
WS_EX_TOOLWINDOW = 128
WS_EX_WINDOWEDGE = 256
hWnd=DllHwnd(title)
DllUSER32=strcat(DirWindows(1),"USER32.DLL")
Style=DllCall(DllUSER32,long:"GetWindowLongA",long:hWnd,long:GWL_STYLE)
StyleEx=DllCall(DllUSER32,long:"GetWindowLongA",long:hWnd,long:GWL_EXSTYLE)
Message("Current Styles: Style and StyleEx",Style:@CR:StyleEx)
Style = Style ^ WS_DLGFRAME
StyleEx=StyleEx ^ WS_EX_TOOLWINDOW
DllCall(DllUSER32,long:"SetWindowLongA",long:hWnd,long:GWL_STYLE,long:Style)
DllCall(DllUSER32,long:"SetWindowLongA",long:hWnd,long:GWL_EXSTYLE,long:StyleEx)
DllCall(DllUSER32,long:"SetWindowPos", long:hWnd, long:0, long:0, long:0, long:0, long:0, long:32|2|1);Redraw
#EndFunction
;WinStyleTest("Untitled - Notepad")
WinStyleTest("Calculator")
Quote from: ....IFICantBYTE on December 12, 2013, 07:03:02 PM
Don't know if you can get the desired frame you want by playing around with various style values in this, but here it is anyway...
Thanks! what a great tool for testing!
-Kirby