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

Était-ce utile?

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;
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top