PDA

Click to See Complete Forum and Search --> : Window Style Bits


agent
Aug 12th, 2000, 10:22 PM
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:
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.

Sastraxi
Aug 13th, 2000, 10:13 AM
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.

parksie
Aug 13th, 2000, 10:45 AM
Wouldn't just using Not work?

gwdash
Aug 13th, 2000, 11:19 AM
This worked for me:


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

parksie
Aug 13th, 2000, 11:21 AM
Aha! I see now...
Collect all the settings together (Or them), then remove (Xor the result).

agent
Aug 15th, 2000, 12:59 AM
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)?