-
I'd like to remove to Thickboarder, Min and max buttons, and the sysmenu from another window. I've already worked out the code to get the hwnd and the current style flags.
So far, I've tried most of the logic functions with the bits to try to turn them off.
the code looks something like this:
Code:
Dim newstyle As Long
oldstyle = GetWindowLong(hwnd&, GWL_STYLE)
newstyle = oldstyle Or (WS_CAPTION Or WS_MAXIMIZEBOX Or WS_MINIMIZEBOX Or WS_SYSMENU Or WS_THICKFRAME)
SetWindowLong hwnd&, GWL_STYLE, newstyle
I've tried "or not", "and", "or", "and not", "-", "+", and "xor"
None seem to have any effect.
-
Why don't you post a FOR...NEXT loop until it's set everything off? Boolean logic is tricky, and (most of the time) it only works with Booleans.
-
Wouldn't just using Not work?
-
This worked for me:
Code:
Dim newstyle As Long
oldstyle = GetWindowLong(Form1.hwnd, GWL_STYLE)
newstyle = oldstyle Xor (WS_CAPTION Or WS_MAXIMIZEBOX Or WS_MINIMIZEBOX Or WS_SYSMENU Or WS_THICKFRAME)
SetWindowLong Form1.hwnd, GWL_STYLE, newstyle
-
Aha! I see now...
Collect all the settings together (Or them), then remove (Xor the result).
-
Unfortunately, the code i'm looking for is to modify a window outside of my own. The programmer has somehow managed to "lock" the window's style bits. I'll have to see if there is another way around it. Is there a way to make another (non-vb) program's form non-movable (except for with SetWindowPos)?