WinAPI sprawdzanie czy wybrany styl wystąpił

0

Witam. Jak mogę sprawdzić, czy dany styl kontrolki jest aktywny? Zrobiłem na razie coś takiego, ale nie działa.

 
WINDOWINFO Info;
Info.cbSize = sizeof( WINDOWINFO );
GetWindowInfo(hwnd, &Info);
if( Info.dwStyle == ES_MULTILINE )
{
     MessageBox(NULL, "", "", MB_OK);
}
//nie działa

oraz próbowałem też tak

UINT style = (UINT)GetWindowLong(hwnd, GWL_STYLE) ;
if( style == ES_MULTILINE )
{
     MessageBox(NULL, "", "", MB_OK);
}
//tez nie dziala

Myślę, że błędnie sprawdzam, czy występuje dany styl. spowodowane jest to pewnie tym, że występuje więc niż 1 styl. Jak konkretnie sprawdzić, czy istnieje jeden z nich?

edit:

Znalazłem taki artykuł:

Alternatywa bitowa

Wynikiem alternatywy bitowej jest na danej pozycji jedynka w tedy gdy przynajmniej w jednej zmiennej na danej pozycji jest jedynka. W przeciwnym wypadku jest 0.
01101011 - zmienna1
11001101 - zmienna2
11101111 - wynik
Działa on na argumentach całkowitych
Składnia:
zmienna1 | zmienna2

Czyli w takim razie powinienem zrobić mniejwiecej tak?

 
UINT styl = (UINT)GetWindowLong(hwnd, GWL_STYLE
char kod1[sizeof(UINT)];
char kod2[sizeof(UINT)];
itoa(styl, kod1, 2);
itoa(ES_MULTILINE, kod2, 2);

//teraz sprawdzić, czy zgadza się wystapienie jedynek?

Niby to powinno działać, ale co zrobić, jeżeli kilka flag stworzy taki sam kod?
Musze tak zarządzić zmiennymi, aby do tego nie dopuścić?

0

Już znalazłem odpowiedź na tym forum ;D
http://4programmers.net/Forum/Newbie/193102-suma_bitowa

Tylko jedno pytanie. Istnieje jakaś gotowa funkcja sprawdzająca, czy jakaś wartość jest składnikiem sumy bitowej?

1

Wykonaj bitowe and swojej sumy bitowej z tym, czego oczekujesz.

Jeśli masz 11001 na przykład i wykonasz bitowe and z 10000 to dostaniesz 10000, czyli pierwszy bit jest ustawiony na 1.
Jeśli masz 01000 na przykład i wykonasz bitowe and z 10000 to dostaniesz 00000, czyli 0, czyli pierwszy bit jest ustawiony na 0.

1

pewnie
if(Info.dwStyle & ES_MULTILINE == ES_MULTILINE)

albo po prostu krócej
if(Info.dwStyle & ES_MULTILINE > 0)

bo pewnie maska jest pojedynczym przesuniętym bitem więc wynikiem będzie zero, albo ta maska właśnie

1 użytkowników online, w tym zalogowanych: 0, gości: 1