Visual C++ - MessageBox beim Beenden

C, C++, VB, Delphi, JAVA...

Moderator: DCE Team

Visual C++ - MessageBox beim Beenden

Beitragvon chris47803 » So 14.06.2009 11:35

Hallo!

Ich möchte gerne eine Meldung einblenden,
ob das Programm wirklich beendet werden soll.
Beim Klick auf Yes soll geschlossen werden
und bei No soll nichts passieren.

Leider erhalte ich beim Debuggen folgende Meldung:
error C3063: ==-Operator: Alle Operanden müssen den gleichen Enumerationstyp aufweisen.

Was mache ich denn da falsch?

Danke, Chris

Code: Alles auswählen
private: System::Void beendenToolStripMenuItem_Click(System::Object^  sender, System::EventArgs^  e)
         {
             if (MessageBox::Show("Wirklich beenden?","Warnung!", MessageBoxButtons::YesNo, MessageBoxIcon::Warning)  == 0)
             {
                this->Close();
             }
         }    

private: System::Void beendenToolStripMenuItem_Click(System::Object^ sender, System::EventArgs^ e)
{
if (MessageBox::Show("Wirklich beenden?","Warnung!", MessageBoxButtons::YesNo, MessageBoxIcon::Warning) == 0)
{
this->Close();
}
}    
Zuletzt geändert von chris47803 am So 14.06.2009 12:20, insgesamt 1-mal geändert.
Besucht auch bitte meine Webseiten.

PersonalBit | Formel 1
Benutzeravatar
chris47803
Mitglied
 
Beiträge: 34
Registriert: Sa 03.12.2005 20:46

Re: Visual C++ - MessageBox beim Beenden

Beitragvon ttbf » So 14.06.2009 12:01

Das Problem ist das die Funktion vonder WinAPI selten einfache int werte zurückgeben... in diesem fall wird ein DialogResult Object zurückgegeben.
Dieses kann dan auf den entsprechenden zustand überprüft werden.

Code: Alles auswählen
DialogResult result;

            result = MessageBox::Show("Wirklich beenden?","Warnung!", MessageBoxButtons::YesNo, MessageBoxIcon::Warning);

            if(result == DialogResult.Yes)
            {
                this.Close();
            }
Benutzeravatar
ttbf
Mitglied
 
Beiträge: 3
Registriert: Mo 27.09.2004 19:47

Re: Visual C++ - MessageBox beim Beenden

Beitragvon chris47803 » So 14.06.2009 12:25

Hallo!

Vielen Dank für die schnelle Antwort.
Leider läuft es soch auch nicht rund.

Aus einem anderen Forum bekam ich eine Lösung:
Code: Alles auswählen
int _answer = 0;

_answer = Convert::ToInt16(MessageBox::Show("Wirklich beenden?","Warnung!", MessageBoxButtons::YesNo, MessageBoxIcon::Warning));

if(_answer == 6)
{
    this->Close();
}


Danke, Chris
Besucht auch bitte meine Webseiten.

PersonalBit | Formel 1
Benutzeravatar
chris47803
Mitglied
 
Beiträge: 34
Registriert: Sa 03.12.2005 20:46

Re: Visual C++ - MessageBox beim Beenden

Beitragvon Asto » Mo 15.06.2009 01:38

Danke für deine Rückmeldung mit der Lösung :thumbup:

Details über Rückgabewerte und Parameter, etc. von Funktionen der Windows API erhält man auch schnell und umfangreich im MSDN. Dazu gibts auch Informationen welche Header für die Funktion nötig wären.

Hier z.B. die MessageBox -> http://msdn.microsoft.com/en-us/library/ms645505.aspx
Weiter unten gibt es auch oft etwas "komplexere" (und somit gut nützliche) Beispiele.

Ich nutze MSDN regelmäßig, wenn Probleme bei der Arbeit mit der WinApi auftreten bzw ist es auch nett zum nachlesen von möglichen Werten von Parametern usw... =)

PS: Nutzt du das NET Framework 3 (wenn ich mir deine Show Parameter so ansehe)?
Auf jedenfall müsse das dann die richtige Seite sein zu der Funktion: http://msdn.microsoft.com/de-de/library/ms598709(VS.85).aspx
Da steht unter Rückgabewerte, das die Funktion ein MessageBoxResult zurückgibt, je nachdem welcher Button gedrückt wurde. Details zu diesen Werten gibt es auch noch hier: http://msdn.microsoft.com/de-de/library/system.windows.messageboxresult(VS.85).aspx
XING | The Secret of Success: Suck Less.
Benutzeravatar
Asto
Team
 
Beiträge: 2019
Registriert: So 19.09.2004 21:52


Zurück zu Programmiersprachen

Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 1 Gast