2010-04-21 13 views
3

J'essaie de vérifier si une fenêtre a un certain style en utilisant GetWindowLong (hWnd, GWL_STYLE) mais cela me donne un type de variable LONG. Comment vérifieriez-vous un style spécifique à partir de cela dire un type de valeur const 'WS_CAPTION'?Obtention du style de fenêtre

Répondre

4

utiliser l'opérateur au niveau du bit à comparer avec & ce type long,

exemple

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

Ce n'est pas l'opérateur logique, mais l'opérateur * bitwise *. –

+0

Oups, je suis corrigé. Merci – YOU

0

La plupart des styles de fenêtre WS_ sont des valeurs-bit unique; qui est chacun d'entre eux occupe seulement un bit en dwStyles.

Ici dwStyles peut être obtenu à partir de: DWORD dwStyles = CWnd::GetStyle();

Mais quelques-uns des styles de WS_, tels que WS_CAPTION, WS_OVERLAPPEDWINDOW, WS_POPUPWINDOW, combiner quelques styles d'un seul bit.

Le code de test ci-dessous est valide pour les styles de fenêtre à bit unique mais pas OK pour les styles combinés.

DWORD dwSomeStyle = WS_... ; 
BOOL bSomeStyleIsPresentForThisWnd; 

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