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

02.08.2009, 20:39

Ja, hab ich auch gelesen^^

Meinst du Sowas:

C-/C++-Quelltext

1
LRESULT CALLBACK WndProc (HWND, UINT, WPARAM, LPARAM);


Edit:
Mein Code bis jetzt:

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
#include <windows.h>

char WINDOW_TITLE[] = "Titel";

LRESULT CALLBACK WndProc (HWND, UINT, WPARAM, LPARAM);

int WINAPI WinMain( HINSTANCE hInstance, HINSTANCE hPrevInstance, LPTSTR cmdLine, int cmdShow )
{
// Define the window

WNDCLASSEX wcex;
wcex.cbSize = sizeof( WNDCLASSEX );
wcex.style = CS_HREDRAW | CS_VREDRAW | CS_OWNDC;
wcex.lpfnWndProc = WndProc;
wcex.cbClsExtra = 0;
wcex.cbWndExtra = 0;
wcex.hInstance = hInstance;
wcex.hIcon = NULL;
wcex.hCursor = LoadCursor( hInstance, IDC_ARROW );
wcex.hbrBackground = (HBRUSH)GetStockObject( WHITE_BRUSH );
wcex.lpszMenuName = NULL;
wcex.lpszClassName = WINDOW_TITLE;

// Register the window

RegisterClassEx( &wcex );

// Create the window

HWND hWnd = CreateWindow( WINDOW_TITLE, WINDOW_TITLE, WS_OVERLAPPEDWINDOW, CW_USEDEFAULT, CW_USEDEFAULT, 500, 500, 0, 0, hInstance, 0 );


ShowWindow( hWnd, SW_SHOW );
UpdateWindow( hWnd );

// Main loop

MSG msg;
while ( 1 )
{
// Only render when there are no messages

if ( PeekMessage( &msg, NULL, 0, 0, PM_REMOVE ) )
{
if ( msg.message == WM_QUIT)
{
break;

}
TranslateMessage( &msg );
DispatchMessage ( &msg );

}
else
{
// Render a frame


}

}

return 0;

}


error LNK2019: Verweis auf nicht aufgelöstes externes Symbol ""long __stdcall WndProc(struct HWND__ *,unsigned int,unsigned int,long)"
....

Käsekönig

1x Contest-Sieger

  • Private Nachricht senden

12

02.08.2009, 21:41

Du hast die Funktion WndProc jetzt zwar Deklariert, aber noch nicht definiert!

13

02.08.2009, 21:58

Deswegen wahrscheinlich auch der Fehler...

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
#include <windows.h>

LRESULT CALLBACK WndProc (HWND, UINT, WPARAM, LPARAM); 

int WINAPI WinMain (HINSTANCE hI, HINSTANCE hPrI, PSTR szCmdLine, int iCmdShow)
{
char AppName[] = "Fensterklasse";
WNDCLASS WinClass;

WinClass.style         = CS_HREDRAW | CS_VREDRAW;
WinClass.lpfnWndProc   = WndProc;
WinClass.cbClsExtra    = 0;
WinClass.cbWndExtra    = 0;
WinClass.hInstance     = hI;
WinClass.hIcon         = LoadIcon (NULL, IDI_WINLOGO);
WinClass.hCursor       = LoadCursor (NULL, IDC_ARROW);
WinClass.hbrBackground = (HBRUSH) GetStockObject (BLACK_BRUSH);
WinClass.lpszMenuName  = NULL;
WinClass.lpszClassName = AppName;

RegisterClass (&WinClass);

HWND Fenster = CreateWindow (AppName, "", WS_SYSMENU | WS_THICKFRAME, 500, 500, 350, 350, NULL, NULL, hI, NULL);

ShowWindow   (Fenster, iCmdShow);
UpdateWindow (Fenster);

MSG msg;
    while (GetMessage (&msg, NULL, 0, 0))
    {
        TranslateMessage (&msg);
        DispatchMessage (&msg);
    }
return msg.wParam;
}


LRESULT CALLBACK WndProc (HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam)
{
    HDC hdc;

switch (message)
{
    case WM_DESTROY:
    PostQuitMessage (0);
    return 0;
}

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


Alles klar !
Soweit so gut, hab noch ne Frage:

return DefWindowProc (hwnd, message, wParam, lParam);
HDC


Könntet ihr mir diese beiden Begriffe noch erklären ?
Dann kann ich mit der Einrichtung von Dx anfangen :?

Käsekönig

1x Contest-Sieger

  • Private Nachricht senden

14

02.08.2009, 22:03

Falls du eine Nachricht nicht behandelst, kümmert sich diese Standardfunktion von Windows darum!

15

02.08.2009, 22:17

Du meinst:
return DefWindowProc (hwnd, message, wParam, lParam);
Oder ?
Und wofür ist HDC ? Hat glaube ich irgendwas mit Grafik zu tun oder ?

Käsekönig

1x Contest-Sieger

  • Private Nachricht senden

16

02.08.2009, 22:21

Ja, das mein ich!

Dieses HDC kannst du rauslöschen. Weiß selber nicht, wozu das gut ist. Auf jeden Fall brauchst du es hier nicht.

17

03.08.2009, 00:45

Ah okay, danke !

GR-PA

Treue Seele

Beiträge: 326

Wohnort: Daheim

Beruf: Faulenzer

  • Private Nachricht senden

18

03.08.2009, 13:02

HDC ("device context" = Gerätekontext) ist ein Datentyp der WinAPI. Die Funktion BeginPaint z.B. hat diesen Datentyp als Rückgabewert. Er repräsentiert den Gerätekontext deines Fensters und wird benötigt, wenn du WinAPI-Funktionen aufrufst, die eine Ausgabe in deinem Fenster erstellen (z.B. Textausgabe). Da du solche Funktionen nicht verwendest und auch nicht auf die Nachricht WM_PAINT reagierst brauchst du auch keine Variable von diesem Typ.

btw: Wozu brauchst du einen Bildschirmschoner? Hast du noch einen antiken Röhrenmonitor auf deinem Schreibtisch? Bei neueren Monitoren sind Bildschirmschoner nämlich eig. nur unnützer Stromverbrauch.
Signaturen werden überbewertet

19

03.08.2009, 18:45

Ne, hab nen LCD ;)

Den Bildschrimschoner will ich eigentlich mehr zum Lernen programmieren...
Aber wenn er mir gefällt, nutze ich auch seine eigentliche Funktion ;)
So viel mehr Verbrauch ist das ja auch nicht :D

Werbeanzeige