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

11

06.07.2007, 22:12

Bevor es in Vergessenheit gerät, das Ex bei WNDCLASSEX, für was steht das?
"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

12

06.07.2007, 22:14

"Extended" afaik, da du mehr sachen einstellst als bei der normalen wndclass
"Don't trust your eyes: They are a hell of a lot smarter than you are"

13

07.07.2007, 20:26

So, nun bin ich beim statischen Text angelangt und habe den Beispielcode auch gleich abgetippt, nur das diesmal beim compilieren zu Fehlern kommt. Ich hoffe ihr könnt mir weiterhelfen!?
"Wenn es keine Milch gäbe, würde ich auf Kaffee verzichten."

14

07.07.2007, 20:27

Upps, Quelltext vergessen!

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
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
// C++ für Spieleprogrammierer

// Übung zu Kapitel 10

// Übung

//

#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 a,
                    LPSTR lpcmdline, int ncmdshow)
{
    WNDCLASSEX windowclass;  // Fensterklasse

    HWND hWnd;               // Fenster Handle

    MSG message;             // Die Nachricht


    // ID des Child-Fensters

#define ID_BEISPIELTEXT 4000;

    // Handle für den statischen Text

    HWND hText;

    
    

    // 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;

    // Funktion speichern

    windowclass.hInstance = hInst;

    // 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_OVERLAPPEDWINDOW | WS_VISIBLE,
                           CW_USEDEFAULT, CW_USEDEFAULT,
                           250, 250,
                           NULL,
                           NULL,
                           hInst,
                           NULL);
    if (hWnd == NULL)
        return (0);
    
    // Statischen Text als Child-Fenster erzeugen

    hText = CreateWindow ("STATIC",
                          "Beispieltext",
                          WS_VISIBLE | WS_CHILD,
                          0, 100,
                          300, 20,
                          hWnd,
                          (HMENU)ID_BEISPIELTEXT,
                          hInst,
                          NULL);


    // 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_RBUTTONDOWN):
        {
            PostQuitMessage (0);
            return (0);
        }

    case (WM_KEYDOWN):
        {
            switch (wParam)
            {
            case (VK_ESCAPE):
                {
                    PostQuitMessage (0);
                    return (0);
                }
            }
        }break;
    }

    return (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

15

07.07.2007, 20:34

Was für ein Fehler und in welcher Zeile?

Wozu brauchst du das?

C-/C++-Quelltext

1
(HMENU)ID_BEISPIELTEXT, 
@D13_Dreinig

16

07.07.2007, 20:41

Yupp, da war auch der Fehler. Ich habe eine Identifier für das Child-Fenster erzeugt, ohne auf die Nachrichten die von diesem Label ausgeht in der Callback-Funktion einzugehen. Ich habe es sodann durch ein NULL ersetzt und naja wie soll ich sagen: Es klappt.
Trotzdem Danke.
"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

17

07.07.2007, 20:45

Zitat von »"Fruchteis"«


Trotzdem Danke.


Trotz was?
@D13_Dreinig

18

07.07.2007, 21:14

Dafür das du auf meine Frage geantwortet hast?!
"Wenn es keine Milch gäbe, würde ich auf Kaffee verzichten."

Fred

Supermoderator

Beiträge: 2 121

Beruf: Softwareentwickler

  • Private Nachricht senden

19

07.07.2007, 22:07

Ich gehe davon aus dass du seine Gegenfrage falsch verstandest, sonst wäre der Zusammenhang sehr komisch.

"Trotzdem Danke, auch wenn du auf meine Frage geantwortet hast" :)

Er meinte vermutlich, warum du "Trotzdem" schriebst, wo er dir doch die Lösung dir Problems gesagt hat .

20

07.07.2007, 22:46

Stimmt :D .Mein Fehler.
Da ich auf die Lösung des Problems selbst gestossen bin, während er wahrscheinlich mir geantwortet hat, habe ich es so erachtet, das er mir nicht hätte anworten brauchen, es aber tat, da er ja nicht wusste das ich wusste wie ich das Problem lösen kann. <- Naja, ich hoffe ihr wisst was ich meine!? :D
"Wenn es keine Milch gäbe, würde ich auf Kaffee verzichten."

Werbeanzeige