2010-04-21 58 views
3

我想檢查一個窗口是否具有使用GetWindowLong(hWnd,GWL_STYLE)的特定樣式,但是這給了我一個長類型的變量。你將如何檢查一個特定的風格,說一個常量值類型'WS_CAPTION'?獲取窗口樣式

回答

4

使用按位操作者&與長型進行比較,

例如

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

它不是邏輯的,而是*按位* AND運算符。 – 2010-04-21 01:12:32

+0

糟糕,我站好了。謝謝 – YOU 2010-04-21 01:14:39

0

大部分窗口樣式WS_是單比特值; 它們每個都只佔用dwStyles中的一個位。

這裏dwStyles可以得到:DWORD dwStyles = CWnd::GetStyle();

但一些WS_風格,如WS_CAPTIONWS_OVERLAPPEDWINDOWWS_POPUPWINDOW,結合了幾單位的風格。

以下測試代碼適用於單位窗口樣式 ,但不適用於組合樣式的OK

DWORD dwSomeStyle = WS_... ; 
BOOL bSomeStyleIsPresentForThisWnd; 

if (dwStyles & dwSomeStyle) 
    bSomeStyleIsPresentForThisWnd = TRUE; 
else 
    bSomeStyleIsPresentForThisWnd = FALSE;