Herzlich Willkommen, lieber Gast!
  Sie befinden sich hier:

  Forum » C / C++ (WinAPI, Konsole) » Fenster wird nicht erzeugt

Forum | Hilfe | Team | Links | Impressum | > Suche < | Mitglieder | Registrieren | Einloggen
  Quicklinks: MSDN-Online || STL || clib Reference Grundlagen || Literatur || E-Books || Zubehör || > F.A.Q. < || Downloads   

Autor Thread - Seiten: > 1 <
000
07.09.2004, 19:10 Uhr
~Gast
Gast


Hey ho,
ich hab mir grad ein Tut über die Win API durchgelesen und dabei folgenden Code mitgeschrieben bzw. kopiert


Code:

#include <windows.h>
LRESULT CALLBACK WndProc(HWND, UINT, WPARAM, LPARAM);
const char szAppName[] = "Ein eigenes Fenster";

int WINAPI WinMain (HINSTANCE hInstance, HINSTANCE hPrevInstance,
                    PSTR szCmdLine, int iCmdShow)
{
    HWND       hWnd;                                MSG        msg;                                WNDCLASS   wc;                                
    wc.style         =  CS_HREDRAW | CS_VREDRAW;                wc.lpfnWndProc   =  WndProc;                        wc.hInstance     =  hInstance;                        wc.hCursor       =  LoadCursor(NULL,IDC_ARROW);        
    wc.hIcon         =  LoadIcon(NULL,IDI_APPLICATION);            
    wc.hbrBackground =  (HBRUSH)GetStockObject(BLACK_BRUSH);    
    wc.lpszClassName =  szAppName;                        wc.lpszMenuName  =  NULL;                            RegisterClass(&wc);                                
    hWnd = CreateWindow(szAppName,
                       "Titelleiste",
                       WS_OVERLAPPEDWINDOW,
                       CW_USEDEFAULT,          /* X-Position auf dem Monitor */
                       CW_USEDEFAULT,          /* Y-Position auf dem Monitor */
                       CW_USEDEFAULT,          /* Fensterbreite              */
                       CW_USEDEFAULT,          /* Fensterhoehe               */
                       NULL,
                       NULL,
                       hInstance,
                       NULL);

    ShowWindow(hWnd, SW_SHOW);//
    UpdateWindow(hWnd);                                                            
    while (GetMessage(&msg, NULL, 0, 0))
    {
        TranslateMessage(&msg);
        DispatchMessage(&msg);
    }

    return msg.wParam;
    
}

LRESULT CALLBACK WndProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam)
{
    switch (message)
    {
    case WM_DESTROY:
        {
            PostQuitMessage(0);
            return 0;
        }
    }

    return DefWindowProc(hWnd, message, wParam, lParam);
}



Hab das soweit auch verstanden. Nur wenn ich auf ausführen gehe zeigt er mir das Fenster nicht an. Seltsamer weise ist das Programm aber im Taskmanager unter den Prozessen aufgeführt.
Kann mir jemand helfen???
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
001
08.09.2004, 08:54 Uhr
Tacco



Hallo,

du hast WS_VISIBLE fergesen




C++:
CreateWindow(szAppName,
                       "Titelleiste",
                       WS_OVERLAPPEDWINDOW|WS_VISIBLE,
                       CW_USEDEFAULT,          /* X-Position auf dem Monitor */
                       CW_USEDEFAULT,          /* Y-Position auf dem Monitor */
                       CW_USEDEFAULT,          /* Fensterbreite              */
                       CW_USEDEFAULT,          /* Fensterhoehe               */
                       NULL,
                       NULL,
                       hInstance,
                       NULL);



MFG Tacco
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
002
08.09.2004, 09:13 Uhr
Airdamn



füge diese 2 Zeilen hinzu bevor Du RegisterClass ausführst:


C++:
wc.cbClsExtra     =    0;
wc.cbWndExtra     =    0;

 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
003
08.09.2004, 09:26 Uhr
Guybrush Threepwood
Gefürchteter Pirat
(Operator)



Zitat von Tacco:
Hallo,

du hast WS_VISIBLE fergesen

MFG Tacco

Das braucht er auch nicht weil er ShowWindow benutzt.


Zitat von Airdamn:
füge diese 2 Zeilen hinzu bevor Du RegisterClass ausführst:


C++:
wc.cbClsExtra     =    0;
wc.cbWndExtra     =    0;



Das könnte der Fehler sein. Du solltest grundsätzlich jede Struktur erstmal mit Nullen füllen wenn du nicht jedes Element benutzen willst. Am Besten so:

C++:
memset(&wc,0,sizeof(WINDOWCLASS));


Außerdem solltest du den Rückgabewert von RegisterClass überprüfen.

Dieser Post wurde am 08.09.2004 um 09:28 Uhr von Guybrush Threepwood editiert.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
Seiten: > 1 <     [ C / C++ (WinAPI, Konsole) ]  


ThWBoard 2.73 FloSoft-Edition
© by Paul Baecher & Felix Gonschorek (www.thwboard.de)

Anpassungen des Forums
© by Flo-Soft (www.flo-soft.de)

Sie sind Besucher: