WinApi - problem z instrukcją if


(Jacelo) #1

Witam uprzejmie!

Mam dwa przyciski - po naciśnięciu każdego z nich w polu tekstowym powinien być wyświetlany inny tekst. Jednak zawsze wyświetla się tekst z drugiej instrukcji "if". Kiedy w tych instrukcjach podstawię MessageBox widać że program za każdym razem po prostu wykonuje obydwie instrukcje po kolei - bez względu na to, który przycisk zostanie naciśnięty. Dopiero po usunięciu instrukcji "obliczania" zmiennych tekstowych jest OK.

Tak działa niewłaściwie

case WM_COMMAND: 


       if(wPar==1) 

           tekst1 = "tekst1";

           tekst = "tekst w ifie pierwszym + " + tekst1;

           SetWindowText(hEdit,tekst.c_str());


      if(wPar==2) 

           tekst2 = "tekst2";

           tekst = "tekst w ifie drugim + " + tekst2;

           SetWindowText(hEdit,tekst.c_str());


       break;

Tak jest OK

case WM_COMMAND: 


       if(wPar==1) 

           MessageBox(HWND_DESKTOP,"1","Tytuł komunikatu",MB_OK);


      if(wPar==2) 

           MessageBox(HWND_DESKTOP,"2","Tytuł komunikatu",MB_OK);

       break;

(nnick) #2

Z klamerkami { } byłoby prawdopodobniej łatwiej kompilatorowi zrozumieć o co Ci chodzi.


(Jacelo) #3

Właśnie przed chwilą też na to wpadłem!

Ale dzięki serdeczne za zainteresowanie i szybką podpowiedź!


(Rolek0) #4

if nie jest częścią WinAPI.

WinAPI to zbiór funkcji i struktur służących do komunikacji programu z systemem Windows.

Programy pisze się normalnie używając jakiegoś języka programowania i przestrzegając jesgo zasad.

Z tego co widzę to piszesz w C++, radzę ci się go douczyć. Polecam tutorial: http://xion.org.pl/productions/texts/coding/megatutorial/ opcjonalnie http://darkcult.nazwa.pl/wiki/index.php/C%2B%2B :slight_smile:


(Enterbios) #5

Jeżeli po instrukcji IF nie masz nawiasów klamrowych grupujących instrukcje to warunkowo zostanie wykonana tylko pierwsza z nich.