Question

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

Was it helpful?

Solution

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

example

if (szLng & WS_CAPTION){
    // that window has caption
}

OTHER TIPS

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;
Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow
scroll top