I'm trying to check if a window has a certain style using GetWindowLong(hWnd, GWL_STYLE) but that gives me a LONG type of variable. how would you check for a specific style from that say a const value type 'WS_CAPTION'?
Asked
Active
Viewed 7,464 times
2 Answers
4
use the bitwise & operator to compare with that long type,
example
if (szLng & WS_CAPTION){
// that window has caption
}

YOU
- 120,166
- 34
- 186
- 219
-
1Its not the logical, but the *bitwise* AND operator. – Georg Fritzsche Apr 21 '10 at 01:12
0
Most of the window styles WS_ are single-bit values; that is each of them occupies only one bit in dwStyles.
Here dwStyles
can be obtained from: DWORD dwStyles = CWnd::GetStyle();
But some of the WS_ styles, such as WS_CAPTION
, WS_OVERLAPPEDWINDOW
,
WS_POPUPWINDOW
, combine a few single-bit styles.
The test code below is OK for single-bit window styles
but not OK
for combined styles.
DWORD dwSomeStyle = WS_... ;
BOOL bSomeStyleIsPresentForThisWnd;
if (dwStyles & dwSomeStyle)
bSomeStyleIsPresentForThisWnd = TRUE;
else
bSomeStyleIsPresentForThisWnd = FALSE;