mehrere if() ineinander



  • Hallo,

    ich hätte folgende Frage:

    Ich habe einen Code wo mehrere if () sind.
    Zuerst wird über 1 if() festgestellt das Button XYZ gedrückt wird. Weil es sich dabei um einen Button handelt der mit einer Listbox zusammenarbeitet, bzw. die Auswahl bei der Listbox bestätigt, kommt ein weiteres mal if(). In diesem if() wird ein neuer Button ABC erschaffen und ein weiteres if() soll feststellen, ob dieser Button gedrückt wurde und soll dann was machen. Ich komme bis zum Button ABC:

    if (lParam == (LPARAM)XYZ)
                     {
                           int awe;
                           awe = SendMessage (hauptlistbox, LB_GETCURSEL, 0, 0);
                      if (awe == 0)
                   {
                                                            ABC= CreateWindow ("button", "ABC",
                                                           WS_VISIBLE | WS_CHILD,
                                                           650, 550, 150, 30, hwnd, (HMENU) ID_ABC,
                                                           hInst, NULL);        
    
                      if (lParam == (LPARAM)ABC)
                          {
                              Code für bspw. TextOut()
                          }    
    
                  }
                  }
    

    Der Code ist jetzt gekürzt.
    Das Problem ist, dass ich von dem TextOut() nie was zu sehen bekommen. Also stimmt irgentwas mit dem dritten if() nicht, denn der Button erscheint ja. Allerdings bekomme ich auch keinerlei Fehlermeldung von Dev-C++.
    Was mache ich falsch?
    Vielen Dank im vorraus!
    Mit freundlichen Grüßen
    Moadeh



  • Moadeh schrieb:

    Der Code ist jetzt gekürzt.

    Wenn der Code weiter gekürzt wird, sieht er nur noch so aus :

    if (lParam == (LPARAM)XYZ)
    {
      if ( awe == 0 )
      {
        if (lParam == (LPARAM)ABC) // <- lParam kann an dieser Stelle nur XYZ sein !
        {
        }
      }
    }
    

    🙂



  • Und wie kann ich das Problem lösen?



  • 😕

    if (lParam == (LPARAM)XYZ)
    {
      if ( awe == 0 )
      {
        // blupp?!
      }
    }
    if (lParam == (LPARAM)ABC)
    {
       // bluppdidupp
    }
    


  • Der Ablauf ist ja wie folgt :

    1. Prüfen ob Button XYZ gedrückt wurde (erste Abfrage). Falls ja, dann Button ABC erzeugen (zweite Abfrage).
    2. Prüfen ob Button ABC gedrückt wurde (dritte Abfrage).

    1. und 2. haben gewissermassen nichts miteinander zu tun.

    Deshalb die dritte Abfrage einfach rausnehmen :

    if (lParam == (LPARAM)XYZ)
    {
      if ( awe == 0 )
      {
    
      }
    }
    if (lParam == (LPARAM)ABC)
    {
    }
    

    Probier mal zur Abfrage die ID's zu nehmen (i.e. if (wParam == ID_ABC) ...) falls das an dieser Stelle im Programm geht. ID's sind "eindeutiger" und immer gleich.

    (hmmm, war wohl jemand schneller)
    🙂


Anmelden zum Antworten