I have a question regarding a window style hexadecimal.
According to http://support.microsoft.com/kb/111011/en-us, 0x16CF0000
contains window styles of WS_VISIBLE
, WS_CLIPSIBLINGS
, WS_CLIPCHILDREN
, WS_CAPTION
, WS_SYSMENU
, WS_THICKFRAME
, WS_MINIMIZEBOX
, and WS_MAXIMIZEBOX
.
How do I check if a window style exist in a combination of window styles? For example, I would like to check if WS_BORDER
(0x00800000
) style exists in 0x16CF0000
.
The standard form is:
if (value & WS_BORDER != 0) { }
The & will do a bitwise-AND and only if the bit of WS_BORDER is set will the result be non-zero
Basically, you can just check whether yourValue AND WS_BORDER = WS_BORDER
.
Unfortunately, some of the bits inside of the style flags are used twice, depending on context, so for example both WS_TABSTOP
and WS_MAXIMIZEBOX
are 0x00010000, so it depends on the context (position of the object and maybe other flags) whether a window really has that property (while a parent control cannot have a tab stop, a child control sometimes can have a maximize box)...
WS_OVERLAPPED = 0x00000000,
WS_POPUP = 0x80000000,
WS_CHILD = 0x40000000,
WS_MINIMIZE = 0x20000000,
WS_VISIBLE = 0x10000000,
WS_DISABLED = 0x08000000,
WS_CLIPSIBLINGS = 0x04000000,
WS_CLIPCHILDREN = 0x02000000,
WS_MAXIMIZE = 0x01000000,
WS_BORDER = 0x00800000,
WS_DLGFRAME = 0x00400000,
WS_VSCROLL = 0x00200000,
WS_HSCROLL = 0x00100000,
WS_SYSMENU = 0x00080000,
WS_THICKFRAME = 0x00040000,
WS_GROUP = 0x00020000,
WS_TABSTOP = 0x00010000,
WS_MINIMIZEBOX = 0x00020000,
WS_MAXIMIZEBOX = 0x00010000,
WS_CAPTION = WS_BORDER | WS_DLGFRAME,
WS_TILED = WS_OVERLAPPED,
WS_ICONIC = WS_MINIMIZE,
WS_SIZEBOX = WS_THICKFRAME,
WS_TILEDWINDOW = WS_OVERLAPPEDWINDOW,
WS_OVERLAPPEDWINDOW = WS_OVERLAPPED | WS_CAPTION | WS_SYSMENU |
WS_THICKFRAME | WS_MINIMIZEBOX | WS_MAXIMIZEBOX,
WS_POPUPWINDOW = WS_POPUP | WS_BORDER | WS_SYSMENU,
WS_CHILDWINDOW = WS_CHILD,
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With