Question
Je suis en train de vérifier si une fenêtre a un certain style à l'aide GetWindowLong (hWnd, GWL_STYLE), mais qui me donne un type LONG de la variable. comment voulez-vous vérifier un style spécifique de ce type de dire une valeur const « WS_CAPTION »?
La solution
utiliser l'opérateur & bitwise comparer avec ce type long,
exemple
if (szLng & WS_CAPTION){
// that window has caption
}
Autres conseils
La plupart des styles de fenêtre WS_ sont des valeurs-bit unique; qui est chacun d'eux occupe un seul bit dans 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 sur un seul bit.
Le code de test ci-dessous est OK pour les styles de fenêtres sur un seul bit
mais pas OK
pour les styles combinés.
DWORD dwSomeStyle = WS_... ;
BOOL bSomeStyleIsPresentForThisWnd;
if (dwStyles & dwSomeStyle)
bSomeStyleIsPresentForThisWnd = TRUE;
else
bSomeStyleIsPresentForThisWnd = FALSE;