views:

66

answers:

2

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'?

+2  A: 

use the bitwise & operator to compare with that long type,

example

if (szLng & WS_CAPTION){
    // that window has caption
}
S.Mark
Its not the logical, but the *bitwise* AND operator.
Georg Fritzsche
Oops, I stand corrected. thanks
S.Mark
A: 

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) == TRUE )
  bSomeStyleIsPresentForThisWnd = TRUE;
else
  bSomeStyleIsPresentForThisWnd = FALSE;

June, 2010.

Mike