问题
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'?
回答1:
use the bitwise & operator to compare with that long type,
example
if (szLng & WS_CAPTION){
// that window has caption
}
回答2:
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;
来源:https://stackoverflow.com/questions/2679680/getting-window-style