Du bist nicht angemeldet.

Stilllegung des Forums
Das Forum wurde am 05.06.2023 nach über 20 Jahren stillgelegt (weitere Informationen und ein kleiner Rückblick).
Registrierungen, Anmeldungen und Postings sind nicht mehr möglich. Öffentliche Inhalte sind weiterhin zugänglich.
Das Team von spieleprogrammierer.de bedankt sich bei der Community für die vielen schönen Jahre.
Wenn du eine deutschsprachige Spieleentwickler-Community suchst, schau doch mal im Discord und auf ZFX vorbei!

Werbeanzeige

1

06.07.2007, 21:05

Wo ist mein Fenster?

Habe mein erstes Fenster programmiert, soweit so gut, nur es gibt da einen Hacken, aus irgendeinen Grund möchte das Fenster nicht erscheinen.
Hier der Quelltext:

C-/C++-Quelltext

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
#include <windows.h>


// Funktionsprototpy der Callback-Funktion

LRESULT CALLBACK callback (HWND hWnd, UINT message,
                           WPARAM wParam, LPARAM lParam);

// Hauptprogramm

//

int WINAPI WinMain (HINSTANCE hInst, HINSTANCE hPrevInst,
                    LPSTR lpcmdline, int ncmdshow)
{
    WNDCLASSEX windowclass;  // Fensterklasse

    HWND hWnd;               // Fenster Handle

    MSG message;             // Die Nachricht

    

    // Klassenname

    const char ClassName[] = "Das Fenster";

    // Größe der Klasse festlegen

    windowclass.cbSize = sizeof (WNDCLASSEX);

    // Fenster bei verschieben neu zeichnen

    windowclass.style = CS_HREDRAW | CS_VREDRAW;

    // Zeiger auf eingene Callback-Funktion

    windowclass.lpfnWndProc = callback;

    // Zusätzlicher Speicher reservieren

    windowclass.cbClsExtra = 0;
    windowclass.cbWndExtra = 0;

    // Name der Fensterklasse

    windowclass.lpszClassName = ClassName;

    // Hintergrundfarbe festlegen

    windowclass.hbrBackground = (HBRUSH)COLOR_BACKGROUND+1;

    // Cursor und Icons

    windowclass.hIcon = LoadIcon (NULL, IDI_APPLICATION);
    windowclass.hIconSm = LoadIcon (NULL, IDI_APPLICATION);
    windowclass.hCursor = LoadCursor (NULL, IDI_HAND);

    // Menü

    windowclass.lpszMenuName = 0;

    // Fenster registrieren

    if (!RegisterClassEx (&windowclass))
        return (0);

    // Fenster erzeugen

    hWnd = CreateWindowEx (NULL,
                           ClassName,
                           "Das Fenster",
                           WS_OVERLAPPED | WS_VISIBLE,
                           100, 100,
                           250, 250,
                           NULL,
                           NULL,
                           hInst,
                           NULL);
    if (hWnd == NULL)
        return (0);

    // Das Hauptprogramm

    while (GetMessage (&message, NULL, 0, 0))
    {
        TranslateMessage (&message);
        DispatchMessage(&message);
    }

    return (int) (message.wParam);
}

// Die CallbackFunktion

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

    DefWindowProc (hWnd, message, wParam, lParam);
}
"Wenn es keine Milch gäbe, würde ich auf Kaffee verzichten."

David_pb

Community-Fossil

Beiträge: 3 886

Beruf: 3D Graphics Programmer

  • Private Nachricht senden

2

06.07.2007, 21:06

C-/C++-Quelltext

1
ShowWindow( hWnd, SW_SHOW );
@D13_Dreinig

3

06.07.2007, 21:14

Danke :D
"Wenn es keine Milch gäbe, würde ich auf Kaffee verzichten."

4

06.07.2007, 21:16

Funktioniert immernoch nicht :?

C-/C++-Quelltext

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
#include <windows.h>


// Funktionsprototpy der Callback-Funktion

LRESULT CALLBACK callback (HWND hWnd, UINT message,
                           WPARAM wParam, LPARAM lParam);

// Hauptprogramm

//

int WINAPI WinMain (HINSTANCE hInst, HINSTANCE hPrevInst,
                    LPSTR lpcmdline, int ncmdshow)
{
    WNDCLASSEX windowclass;  // Fensterklasse

    HWND hWnd;               // Fenster Handle

    MSG message;             // Die Nachricht

    

    // Klassenname

    const char ClassName[] = "Das Fenster";

    // Größe der Klasse festlegen

    windowclass.cbSize = sizeof (WNDCLASSEX);

    // Fenster bei verschieben neu zeichnen

    windowclass.style = CS_HREDRAW | CS_VREDRAW;

    // Zeiger auf eingene Callback-Funktion

    windowclass.lpfnWndProc = callback;

    // Zusätzlicher Speicher reservieren

    windowclass.cbClsExtra = 0;
    windowclass.cbWndExtra = 0;

    // Name der Fensterklasse

    windowclass.lpszClassName = ClassName;

    // Hintergrundfarbe festlegen

    windowclass.hbrBackground = (HBRUSH)COLOR_BACKGROUND+1;

    // Cursor und Icons

    windowclass.hIcon = LoadIcon (NULL, IDI_APPLICATION);
    windowclass.hIconSm = LoadIcon (NULL, IDI_APPLICATION);
    windowclass.hCursor = LoadCursor (NULL, IDI_HAND);

    // Menü

    windowclass.lpszMenuName = 0;

    // Fenster registrieren

    if (!RegisterClassEx (&windowclass))
        return (0);

    // Fenster erzeugen

    hWnd = CreateWindowEx (NULL,
                           ClassName,
                           "Das Fenster",
                           WS_OVERLAPPED | WS_VISIBLE,
                           100, 100,
                           250, 250,
                           NULL,
                           NULL,
                           hInst,
                           NULL);
    if (hWnd == NULL)
        return (0);

    ShowWindow (hWnd, SW_SHOW);

    // Das Hauptprogramm

    while (GetMessage (&message, NULL, 0, 0))
    {
        TranslateMessage (&message);
        DispatchMessage(&message);
    }

    return (int) (message.wParam);
}

// Die CallbackFunktion

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

    DefWindowProc (hWnd, message, wParam, lParam);
}
"Wenn es keine Milch gäbe, würde ich auf Kaffee verzichten."

Fred

Supermoderator

Beiträge: 2 121

Beruf: Softwareentwickler

  • Private Nachricht senden

5

06.07.2007, 21:37

C-/C++-Quelltext

1
UpdateWindow(hWnd);

6

06.07.2007, 21:39

wenn ich schonmal bei der Windowsprogrammierung bin, so könnt ihr mir eventuell erläutern für was bestimmte Abkürzungen stehen, um den Zusammenhang besser vestehen zu können.

CS = ?;
LRESULT = ?;
W-sowieLPARAM = ?;
cb = ?;
lpfnWndProc = ....WindowProcedure?;
cbClsExtra = ?;
IDI = ?;
lpszMenuName = ?;
WS_ = ?;

Nur wenn ihr natürlich möchte. Habe sebstverständlich in der MSDN und bei Goggle geforscht, aber bis auf Erläuterungen zu dessen Anwendungsgebiet nichts gefunden
"Wenn es keine Milch gäbe, würde ich auf Kaffee verzichten."

ChrisJ

Alter Hase

Beiträge: 487

Wohnort: Schweich

Beruf: Schüler

  • Private Nachricht senden

7

06.07.2007, 21:49

cs = class style
idi = ID (Kennummer) Icon
ws = windowstyle
lpfn = long pointer ( to a ) function
cb = count ( of ) bytes
lpsz = lp (long pointer) sz(string terminated by \0)

lresult, lparam, wparam, etc haben einen geschichtlichen hintergrund... kann man bestimmt im inet nochmal nachlesen
"Don't trust your eyes: They are a hell of a lot smarter than you are"

8

06.07.2007, 21:50

Es tut sich immer noch nichts :?
"Wenn es keine Milch gäbe, würde ich auf Kaffee verzichten."

David Scherfgen

Administrator

Beiträge: 10 382

Wohnort: Hildesheim

Beruf: Wissenschaftlicher Mitarbeiter

  • Private Nachricht senden

9

06.07.2007, 21:55

Zitat von »"Fruchteis"«

C-/C++-Quelltext

1
DefWindowProc (hWnd, message, wParam, lParam);

Mach mal ein return davor!
Der Compiler sollte dir deswegen auch eine Warnung gemeldet haben!

10

06.07.2007, 22:10

Erst mal Dank an ChrisJ-> somit kann ich den Zusammenhang besser verstehen.

Und danke an dich David. War schon richtig am verzweifen. Es ist dennoch etwas seltsam das ich nicht auf diesen Fehler aufmerksam geworden bin, da ich den Quelltext mehrere male sorgfälltig durchgegangen bin. Na egal, danke nochmal an euch! :D
"Wenn es keine Milch gäbe, würde ich auf Kaffee verzichten."

Werbeanzeige