Frage



  • Hallo,
    ich habe ein Problem bei dem Code.
    Und zwar erscheint nach dem zweiten mal mausdrücken nicht "Das erscheint nicht ;-("
    Meiner meinung müste das erscheinen. Hat jemand einen Rad?
    Könnte vieleicht jemand den Code überarbeiten 🙄 .
    Bedanke mich für Antworten
    Code:
    // Headerdatei
    #include <windows.h>

    //Callback Funktion zur Nachrichtenbehandlung
    LRESULT CALLBACK MessageHandler(HWND hwnd, UINT msg, WPARAM wparam, LPARAM lparam);
    Test();
    // Das Fensterhandle
    HWND hWnd = 0;

    // Windows main-Funktion
    int WINAPI WinMain(HINSTANCE hInstance, // Handle der Programminstanz
    HINSTANCE hPrevInstance, // Handle der letzten Instanz
    LPSTR lpCmdLine, // Kommandozeile
    int nCmdShow) // Art wie das Fenster angezeigt werden soll
    {

    WNDCLASSEX wndClass; // WNDCLASSEX Struktur

    // Struktur initialisieren
    wndClass.cbSize = sizeof(WNDCLASSEX); // Größe angeben (nie vergessen!)
    wndClass.style = CS_DBLCLKS | CS_OWNDC |
    CS_HREDRAW | CS_VREDRAW; // Standard Stile
    wndClass.lpfnWndProc = MessageHandler; // Die Callback Funktion angeben

    wndClass.cbClsExtra = 0; // Zusätzliche Angaben, wird nicht benötigt
    wndClass.cbWndExtra = 0; // Zusätzliche Angaben, wird nicht benötigt
    wndClass.hInstance = hInstance; // Anwendungsinstanz

    wndClass.hbrBackground = (HBRUSH)GetStockObject(BLACK_BRUSH); // Weisser Pinsel
    wndClass.hCursor = LoadCursor(NULL, IDC_ARROW); // Normaler Cursor
    wndClass.lpszMenuName = NULL; // Das Fenster hat kein Menü
    wndClass.lpszClassName = "WindowClass"; // Der Name der Klasse
    wndClass.hIcon = LoadIcon(NULL, IDI_WINLOGO); // Windows Logo
    wndClass.hIconSm = LoadIcon(NULL, IDI_WINLOGO); // Windows Logo

    RegisterClassEx(&wndClass);

    hWnd = CreateWindowEx(NULL, // Keine erweiterten Stile nutzen
    "WindowClass", // Klassenname
    "Das Fenster", // Fenstertitel
    WS_OVERLAPPEDWINDOW | // Fenster
    WS_VISIBLE, // Eigenschaften
    0, 0, 800, 600, // Anfangsposition und Größe
    NULL, // Handle des Elternfensters
    NULL, // Handle des Menüs
    hInstance, // Anwendungsinstanz
    NULL); // wird nicht benötigt

    // Struktur, in der Informationen zur Nachricht gespeichert werden
    MSG msg;

    // Diese Schleife läuft bis die Nachricht WM_QUIT empfangen wird

    while(GetMessage(&msg,NULL,0,0))
    {
    // Nachricht an die Callbackfunktion senden
    TranslateMessage(&msg);
    DispatchMessage(&msg);
    }

    // Rückgabewert an Windows
    return 0;
    }
    // Diese Funktion wird von Windows aufgrufen, wenn eine Nachricht
    // für Ihr Programm vorliegt
    LRESULT CALLBACK MessageHandler(HWND hwnd, UINT msg, WPARAM wParam, LPARAM lParam)
    {
    // testen, um welche Nachticht es sich handelt
    switch(msg)
    {
    // wenn das Fenster geschlossen wird, eine Nachricht senden,
    // die das Programm beendet
    case WM_DESTROY:
    PostQuitMessage(0);
    case WM_PAINT:
    PAINTSTRUCT ps;
    HDC hDC;

    hDC = BeginPaint(hWnd,&ps);
    SetTextColor(hDC,RGB(255,255,255));
    SetBkMode(hDC, TRANSPARENT);
    // Der Anfang -------------------------------------------------------------------------------
    TextOut(hDC,0,0,"Hallo",5);

    EndPaint(hWnd,&ps);
    break; ;
    case WM_LBUTTONDOWN:
    hDC=GetDC(hWnd);
    TextOut(hDC,0,160,"Hallo",5);
    ReleaseDC(hWnd,hDC);
    Test();
    break;
    }
    // Wenn wir uns nicht um die Nachricht gekümmert haben
    // wird sie an die Standardnachrichtenverarbeitung von Windows
    // geschickt
    return (DefWindowProc(hwnd, msg, wParam, lParam));
    }

    Test()
    {
    while(TRUE)
    {
    UINT msg;
    switch(msg)
    {
    case WM_LBUTTONDOWN:
    HDC hDC;
    hDC=GetDC(hWnd);
    TextOut(hDC,0,176,"Das erscheint nicht ;-(",23);
    ReleaseDC(hWnd,hDC);
    break;
    }
    }
    return 0;
    }



  • print "Hör auf uns zu ver*****en"



  • Bitte nimm Code-Tags, so kann man das doch gar nicht gescheidt lesen!

    cya 🙂



  • ich will ja nich so sein:

    // Headerdatei
    #include <windows.h>
    //Callback Funktion zur Nachrichtenbehandlung
    LRESULT CALLBACK MessageHandler(HWND hwnd, UINT msg, WPARAM wparam, LPARAM lparam);
    Test();
    // Das Fensterhandle
    HWND hWnd = 0;
    
    // Windows main-Funktion
    int WINAPI WinMain(HINSTANCE hInstance, // Handle der Programminstanz
    HINSTANCE hPrevInstance, // Handle der letzten Instanz
    LPSTR lpCmdLine, // Kommandozeile
    int nCmdShow) // Art wie das Fenster angezeigt werden soll
    {
    
    WNDCLASSEX wndClass; // WNDCLASSEX Struktur
    
    // Struktur initialisieren
    wndClass.cbSize = sizeof(WNDCLASSEX); // Größe angeben (nie vergessen!)
    wndClass.style = CS_DBLCLKS | CS_OWNDC |
    CS_HREDRAW | CS_VREDRAW; // Standard Stile
    wndClass.lpfnWndProc = MessageHandler; // Die Callback Funktion angeben
    
    wndClass.cbClsExtra = 0; // Zusätzliche Angaben, wird nicht benötigt
    wndClass.cbWndExtra = 0; // Zusätzliche Angaben, wird nicht benötigt
    wndClass.hInstance = hInstance; // Anwendungsinstanz
    
    wndClass.hbrBackground = (HBRUSH)GetStockObject(BLACK_BRUSH); // Weisser Pinsel
    wndClass.hCursor = LoadCursor(NULL, IDC_ARROW); // Normaler Cursor
    wndClass.lpszMenuName = NULL; // Das Fenster hat kein Menü
    wndClass.lpszClassName = "WindowClass"; // Der Name der Klasse
    wndClass.hIcon = LoadIcon(NULL, IDI_WINLOGO); // Windows Logo
    wndClass.hIconSm = LoadIcon(NULL, IDI_WINLOGO); // Windows Logo
    
    RegisterClassEx(&wndClass);
    
    hWnd = CreateWindowEx(NULL, // Keine erweiterten Stile nutzen
    "WindowClass", // Klassenname
    "Das Fenster", // Fenstertitel
    WS_OVERLAPPEDWINDOW | // Fenster
    WS_VISIBLE, // Eigenschaften
    0, 0, 800, 600, // Anfangsposition und Größe
    NULL, // Handle des Elternfensters
    NULL, // Handle des Menüs
    hInstance, // Anwendungsinstanz
    NULL); // wird nicht benötigt
    
    // Struktur, in der Informationen zur Nachricht gespeichert werden
    MSG msg;
    
    // Diese Schleife läuft bis die Nachricht WM_QUIT empfangen wird
    
    while(GetMessage(&msg,NULL,0,0))
    {
    // Nachricht an die Callbackfunktion senden
    TranslateMessage(&msg);
    DispatchMessage(&msg);
    }
    
    // Rückgabewert an Windows
    return 0;
    }
    // Diese Funktion wird von Windows aufgrufen, wenn eine Nachricht
    // für Ihr Programm vorliegt
    LRESULT CALLBACK MessageHandler(HWND hwnd, UINT msg, WPARAM wParam, LPARAM lParam)
    {
    // testen, um welche Nachticht es sich handelt
    switch(msg)
    {
    // wenn das Fenster geschlossen wird, eine Nachricht senden,
    // die das Programm beendet
    case WM_DESTROY:
    PostQuitMessage(0);
    case WM_PAINT:
    PAINTSTRUCT ps;
    HDC hDC;
    
    hDC = BeginPaint(hWnd,&ps);
    SetTextColor(hDC,RGB(255,255,255));
    SetBkMode(hDC, TRANSPARENT);
    // Der Anfang -------------------------------------------------------------------------------
    TextOut(hDC,0,0,"Hallo",5);
    
    EndPaint(hWnd,&ps);
    break; ;
    case WM_LBUTTONDOWN:
    hDC=GetDC(hWnd);
    TextOut(hDC,0,160,"Hallo",5);
    ReleaseDC(hWnd,hDC);
    Test();
    break;
    }
    // Wenn wir uns nicht um die Nachricht gekümmert haben
    // wird sie an die Standardnachrichtenverarbeitung von Windows
    // geschickt
    return (DefWindowProc(hwnd, msg, wParam, lParam));
    }
    
    Test()
    {
    while(TRUE)
    {
    UINT msg;
    switch(msg)
    {
    case WM_LBUTTONDOWN:
    HDC hDC;
    hDC=GetDC(hWnd);
    TextOut(hDC,0,176,"Das erscheint nicht ;-(",23);
    ReleaseDC(hWnd,hDC);
    break;
    }
    }
    return 0;
    }
    


  • Original erstellt von Gott der 2.:
    [cpp]
    Test()
    {
    while(TRUE)
    {
    UINT msg; // msg ist nicht initialiesiert
    switch(msg)
    {
    case WM_LBUTTONDOWN:
    HDC hDC;
    hDC=GetDC(hWnd);
    TextOut(hDC,0,176,"Das erscheint nicht ;-(",23);
    ReleaseDC(hWnd,hDC);
    break;
    }
    }
    return 0;
    }

    [/cpp]

    Du solltest msg als Parameter an Test() übergeben.



  • Und die Endlosschleife solltest du auch mal abbrechen.



  • Achso, hab ich schon erwähnt daß ich stockschwul bin?



  • *g*



  • Original erstellt von <Headhunter>:
    Achso, hab ich schon erwähnt daß ich stockschwul bin?

    nein. :o

    aber kannst du ja noch nachholen. :p



  • AN ALLE: ICH BIN STOCKSCHWUL!!! 😮 🙄 :p 🙂 :o 😕 😮 😡



  • Leg doch einfach in MessageHandle eine statische Variable an und erhöhe sie in WM_LBUTTONDOWN um 1. Und gibt dann, je nach dem, welchen Wert sie hat deinen Text aus



  • Ich will ein Textadventure erstellen, und weis einfach nicht wie ich die CallBack funktion machen soll.


Anmelden zum Antworten