Variable in MessageBox() ausgeben



  • ich möschte eine Variable in einer MessageBox() ausgeben lassen ich habe es so probiert:

    string variable = "Variable";
    	switch (message)
    	{
    	case WM_CREATE:
    		button1 = CreateWindow ( "button", "Erlauben", WS_CHILD | WS_VISIBLE | BS_PUSHBUTTON, 20, 20, 65, 40, hWnd, (HMENU)1, hInst, NULL);
    		break;
    	case WM_COMMAND:
    		wmId    = LOWORD(wParam);
    		wmEvent = HIWORD(wParam);
    
    		switch (wmId)
    		{
    		case 1:
    			MessageBox(hWnd,variable,"Hier sollte eine Variable Stehen!",NULL);
    			break;
    		}
    

    kam aber zu folgendne fehler:

    ------ Erstellen gestartet: Projekt: test, Konfiguration: Debug Win32 ------
      test.cpp
    c:\dokumente und einstellungen\tomhalo\eigene dateien\visual studio 2010\projects\test\test\test.cpp(156): error C2664: 'MessageBoxA': Konvertierung des Parameters 2 von 'std::string' in 'LPCSTR' nicht möglich
              Kein benutzerdefinierter Konvertierungsoperator verfügbar, der diese Konvertierung durchführen kann, oder der Operator kann nicht aufgerufen werden
    ========== Erstellen: 0 erfolgreich, Fehler bei 1, 0 aktuell, 0 übersprungen ==========
    

    Meine frage jetzt wie gebe ich eine Variable in einer MessageBox() aus und das möglichst unkompliziert



  • Hi,

    char str[] = "Hi!";
    MessageBox(0, str, "^^", MB_OK);

    🙂 Naja, kann man mal übersehen ;P



  • lolli_-) schrieb:

    Hi,

    char str[] = "Hi!";
    MessageBox(0, str, "^^", MB_OK);

    🙂 Naja, kann man mal übersehen ;P

    Das ist richtig, Erklärungen schaden aber nicht.

    Du musst einen C-String (char array) übergeben.
    Steht ja auch in der Fehlermeldung.

    char str[] = "Hi!";
    	MessageBox(0, str, "^^", MB_OK);
    


  • Wuhu dank euch 😃



  • Und nur noch so als Tipp,
    wenn du die Fehlermeldung nicht verstehst
    solltest du dich zwischendurch vielleicht noch
    mal etwas intensiver mit c/c++ beschäftigen
    bevor du weiter mit WinApi machst 🙂



  • Hinweis: Charles Petzold bietet dafür in seinem Buch zur Windows-Programmierung eine spezielle Funktion MessageBoxPrintf an, mit der Variable samt Formatierung in einen String gepackt werden. Ist genial und einfach - gehört in die Werkzeugkiste der WinApi-Programmierung.



  • So kannst du das auch machen:

    MessageBox( hWnd,variable.c_str(),"Hier sollte eine Variable Stehen!",NULL );
    

    Dann gewöhnst du dir gleich ans, STL-Strings statt nackter Chars zu benutzen. Das hilft bei der Fehlervermeidung.

    Gruß Kimmi



  • kimmi schrieb:

    ... Dann gewöhnst du dir gleich ans, STL-Strings statt nackter Chars zu benutzen. Das hilft bei der Fehlervermeidung.

    Braucht man denn überall STL-Strings? Die haben einen Überbau und sind bei einfachen Dingen verzichtbar. Das hat aber mit WinApi nichts zu tun. Wollen wir jetzt wieder die dogmatische Diskussion C versus C++? :p


Anmelden zum Antworten