Message an Dialog Senden



  • Hallo!

    Da ich mich endlich mal zur MFC durchgerungen habe ich auch direkt mal eine erste Frage an euch 😉

    Ich hab volgende Methode:

    void CToolboxDlg::OnButton1() 
    {
    	// TODO: Code für die Behandlungsroutine der Steuerelement-Benachrichtigung hier einfügen
    	int iResult, i=1;
    	CString strTitel;
    
    	strTitel.Format(" Frage #%d", i);
    
    	iResult = MessageBox("Was ist hier los?", strTitel, MB_RETRYCANCEL | MB_ICONQUESTION);
    	switch(iResult)
    	{
    	case IDRETRY: {
    					i++;
    					strTitel.Format(" Frage #%d", i);
    					// hier soll der erneute AUfruf der MessageBox mit nachfolgender auswertung gestartet werden
    					// MessageBox("Was ist hier los?",strTitel, MB_RETRYCANCEL | MB_ICONQUESTION);
    					break;
    				  }
    
    	case IDCANCEL: {
    
    						MessageBox("Aber echt, he!!");
    						break;
    				   }
    	}
    
    }
    

    Ihr könnt euch sicherlich schon so halb denken, was ich (zum lernen ;)) vor habe: Wenn im Dialog Retry gedrückt wird möchte bich das die Message box nochmal aufrufen. Das soll allerdings bis in alle ewigkeit passieren (rein theoretisch zumindest) und nicht nur 2 mal. Sicherlich könnte ich die Methode rekursiv immer wieder aufrufen, aber ich möchte nich unnötig rummüllen.

    Alternativ währe dann SendMessage() (die ich, sofern Sinnvoll auch gern nutzen würde), aber da weis ich nicht so recht wie ich damit umgehe.

    Gruß
    THE_FreaK

    PS: Suche hat mir nicht viel weiter geholfen, vllt hab ich die richtigen Themen aber auch einfach nicht gefunden ^^



  • iResult = MessageBox("Was ist hier los?", strTitel, MB_RETRYCANCEL | MB_ICONQUESTION);
        switch(iResult)
        {
        case IDRETRY: {
                        i++;
                        strTitel.Format(" Frage #%d", i);
                        // hier soll der erneute AUfruf der MessageBox mit nachfolgender auswertung gestartet werden
                        // MessageBox("Was ist hier los?",strTitel, MB_RETRYCANCEL | MB_ICONQUESTION);
                        break;
                      }
    
        case IDCANCEL: {
    
                            MessageBox("Aber echt, he!!");
                            break;
                       }
        }
    

    Nachdem die switch-Anweisung ausgeführt wurde ist die Funktion abgearbeitet und sie wird verlassen. Wenn du mehrere Messageboxen sehen willst musst du eine Scleife drum packen.

    do
    {
        iResult = MessageBox("Was ist hier los?", strTitel, MB_RETRYCANCEL | MB_ICONQUESTION);
        switch(iResult)
        {
        case IDRETRY: {
                        i++;
                        strTitel.Format(" Frage #%d", i);
                        // hier soll der erneute AUfruf der MessageBox mit nachfolgender auswertung gestartet werden
                        // MessageBox("Was ist hier los?",strTitel, MB_RETRYCANCEL | MB_ICONQUESTION);
                        break;
                      }
    
        case IDCANCEL: {
    
                            MessageBox("Aber echt, he!!");
                            break;
                       }
        }
    }
    while (iResult == IDRETRY);
    


  • Mal wieder zu kompliziert gedacht... 🙄

    Danke jedenfalls 🙂

    Aber mal ganz nebenbei: wie würde ich denn Messages in die Nachrichtenbwarteschleife stellen? (z.B. um ein anderes Element zu aktivieren, wie einen 2. Button?)



  • Kann ich nicht genau sagen. musst du dir die Funktionen SendMessage() und/oder PostMessage() mal anschauen


Anmelden zum Antworten