Text im Fenster ausgeben



  • Ich hab ein kleines Problem...Ich hab zum Geburtstag das Buch Spieleprogrammieren mit C++ und Genesis3D bekommen...In diesem Buch hab ich das erste mal was mit WinAPI gemacht...leider wird nur erklärt wie man mit Genesis3D 3D-Spiele macht...Nun habe ich mir den einfachen Quellcode für ein Windows-Fenster genommen und wollte in diesem ein Ratespiel zum laufenbringen (So wie in der Konsole)...Ich hab daher erstemal versucht nur einen einfachen Text auszugeben...Nun habe ich an mehreren Stellen des Codes versucht mit std::cout<<"Hallo"; den Text Hallo auszugeben (iostream hab ich includet)...So weit hat mein Compiler auch beim erstellen der EXE keinen Fehler gefunden...Nur jetzt kommt mein Problem: egal wo ich std::cout<<"Hallo"; im Code hin getan habe wurde am Ende kein Hallo im Fenster angezeicht...könnt ihr mir da helfen??? Geht das garnicht mit std::cout<<"Hallo";???

    Hier der Quellcode (ohne std::cout<<"Hallo"; und #include <iostream>:

    //----------------------------------------------------------
    // RatDochMal.cpp:
    //----------------------------------------------------------
    
    #include "RatDochMal.h"
    
    LRESULT CALLBACK WndProc (HWND hWnd, 
      UINT iMessage, WPARAM wParam, LPARAM lParam);
    
    int WINAPI WinMain
      (HINSTANCE hInstance, HINSTANCE hPrevInstance, 
       LPSTR lpCmdLine, int nShowCmd)
    {
    //----------------------------------------------------------
    //Fensterklasse
    //----------------------------------------------------------
      WNDCLASS Win;     
      MSG      msg; 
    //----------------------------------------------------------
    //Einstellungen
    //----------------------------------------------------------
      Win.cbClsExtra = 0;
      Win.cbWndExtra = 0;
      Win.hInstance  = hInstance;    
      Win.hIcon = LoadIcon(hInstance, IDI_APPLICATION);
      Win.hCursor = LoadCursor(NULL, IDC_ARROW);
      Win.hbrBackground = (HBRUSH)GetStockObject(BLACK_BRUSH);
      Win.style = CS_HREDRAW | CS_VREDRAW;
      Win.lpfnWndProc = WndProc;
      Win.lpszClassName = "???";
      Win.lpszMenuName = NULL;
      RegisterClass (&Win);
    //----------------------------------------------------------
    //Fenster erstellen
    //----------------------------------------------------------
      GHandle = CreateWindow (Win.lpszClassName, 
    						  "RatDochMal - [Esc]=Ende", 
    						  WS_TILED, 
                              CW_USEDEFAULT, 
    						  CW_USEDEFAULT, 
    						  MaxWidth, 
                              MaxHeight, 
    						  NULL, 
    						  NULL, 
    						  hInstance, 
    						  NULL);
      if (!GHandle)
      {
        return 0;
      }
      ShowWindow   (GHandle, nShowCmd);
      UpdateWindow (GHandle);
    //----------------------------------------------------------
    //Programm
    //---------------------------------------------------------- 
      isRunning = true;
      while (isRunning) 
      {
        while 
          (PeekMessage (&msg, NULL, 0, 0, PM_NOREMOVE))
        {
          if (!GetMessage(&msg, NULL, 0, 0 ))
          {
            isRunning = false;
            break;
          }
          TranslateMessage (&msg);
          DispatchMessage  (&msg);
        }
      }
      return 1;
    }
    
    //----------------------------------------------------------
    //Fensterschliesen wenn Esc gedrückt
    //----------------------------------------------------------
    LRESULT CALLBACK WndProc (HWND hWnd, 
      UINT iMessage, WPARAM wParam, LPARAM lParam)
    {
      switch (iMessage)
      {
        case WM_KEYDOWN:
        {
          switch (wParam)
          {
            case VK_ESCAPE:  
            {
              PostMessage(hWnd, WM_QUIT, 0, 0);
            }
          }
        }
        default:
          return DefWindowProc 
            (hWnd, iMessage, wParam, lParam);
      }
      return 0;
    }
    
    //-------------------------------------------------
    //RatDochMal.h:
    //-------------------------------------------------
    
    #include <windows.h>
    
    // Konstanten
    const int MaxWidth     = 500;   // Max. Screenbreite
    const int MaxHeight    = 300;   // Max. Screenhöhe
    
    // Globalvariablen
    HWND GHandle;                   // Fenster-Handle 
    bool isRunning;                 // "Laufvariable"
    

    Ich hoffe ihr könnt mir helfen

    mfg Dimo



  • Moin,

    die Standard I/O Library funktioniert nur in Konsolenprogrammen, damit kommst Du in einer GUI nicht sehr weit ...

    http://www.winprog.org/tutorial/fonts.html

    Du brauchst ein "Edit"-Fenster/Steuerelement für die Eingabe von Text ...

    http://msdn.microsoft.com/en-us/library/bb773169%28VS.85%29.aspx

    Gruß
    Greenhorn



  • Jo danke...aber kannste mir des mal erklären??? bin net grad der beste in Englisch



  • Schau dir mal das hier an ...

    http://www.win-api.de/tutorials.php?tutid=18

    und ...

    http://www.henkessoft3000.de/

    Gruß
    Greenhorn



  • Jo danke werd mir das mal genauer anschauen und hoffen dann das bald alles läuft



  • Er kann sich mit AllocConsole und FreeConsole eine Konsole erzeugen und muss nur die Standard Ausgaben auf diese umleiten.


Anmelden zum Antworten