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

16.07.2006, 08:02

´Tutorial nicht mehr "richtig"?

HI,


ich arbeite gerade mit einem Win32API Tutorial doch spuckt mir (selbst wenn ich den Code des Autors compilie) der Compilier Fehlermeldungen aus.

Das ist der Code des Autors im Tutorialabschnitt Nummer 2

Mein Compilier überhäuft mich da mit Fehlermeldungen.
Ist das Tutorial nur nicht aktuell genug und es gab kleine änderungen?
Oder kann ich mit dem tutorial jetzt gar nichts mehr anfangen:

Hier ist mal der Link zum tutorial: http://www.win-api.de/tutorials.php?tutid=3

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
#define STRICT
#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(WHITE_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, iCmdShow);
   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);
}

koschka

Community-Fossil

Beiträge: 2 862

Wohnort: Dresden

Beruf: Student

  • Private Nachricht senden

2

16.07.2006, 09:00

das liegt zum einen daran, das er wenn du VC Express hast immer auf Unicode kompiliert wird, und zum zweiten der Code unsauber ist. Das Unicode kann man irgendwo in den Projekteinstellungen ausmachen (C-C++?) bzw. VOR dem #include <windows.h> ein #undef UNICODE davorschreiben.

Desweiteren fehlt ein ZeroMemory von WNDCLS, bei mir ist er nicht gestartet. Hier mal ein Code, der wenigstens geht ;) auch wenn er nicht schön ist

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
#define STRICT
#undef UNICODE
#undef _UNICODE
#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;


   ZeroMemory(&wc, sizeof(WNDCLASS));
   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(WHITE_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, iCmdShow);
   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);
}

3

16.07.2006, 09:10

bei mir geht dein code auch nicht!

Zitat


------ Build started: Project: fenster_tests, Configuration: Debug Win32 ------
Linking...
MSVCRTD.lib(crtexe.obj) : error LNK2019: unresolved external symbol _main referenced in function ___tmainCRTStartup
D:\Dokumente und Einstellungen\ThEpROGrammmer\Eigene Dateien\Visual Studio 2005\Projects\fenster_tests\Debug\fenster_tests.exe : fatal error LNK1120: 1 unresolved externals
Build log was saved at "file://d:\Dokumente und Einstellungen\ThEpROGrammmer\Eigene Dateien\Visual Studio 2005\Projects\fenster_tests\fenster_tests\Debug\BuildLog.htm"
fenster_tests - 2 error(s), 0 warning(s)
========== Build: 0 succeeded, 1 failed, 0 up-to-date, 0 skipped ==========



ist es jetzt empfehlenswert das tuto zu benutzen oder soll ich ein anderes benutzen?

koschka

Community-Fossil

Beiträge: 2 862

Wohnort: Dresden

Beruf: Student

  • Private Nachricht senden

4

16.07.2006, 09:13

öhm du musst schon ein leeres Win32Projekt nehmen und kein Dos projekt.

5

16.07.2006, 09:30

kannste auch nachher noch ändern:
properties->linker->system->subsystem->windows

$nooc

Alter Hase

Beiträge: 873

Wohnort: Österreich / Kärnten

Beruf: Schüler

  • Private Nachricht senden

6

16.07.2006, 09:58

ich empfehle:

(old) German Game Dev
bzw.
German Game Dev

da gibts auch ein schönes tutorial für ein win32 fenster.
alles auf unicode getrimmt ..

aber achtung, die site ist nicht mehr allzulange online! sie wird bald off sein für ein update laut nix da.
aber du kannst dir ja die beispiele runterladen + .exe files
Am Anfang der Weisheit steht die eigene Erkenntnis, dass man selbst nichts weiß! - Sokrates

7

16.07.2006, 17:21

das Tutorial ist von germangamedev ^^

dort sind drei win32api tutorials verlinkt! Eins ist eigentlich nur ne schnippselsammelung, das andere ist das oben erwähnte und das andere ist in englisch....

okay dann werd ich das englische mal lesen müssen...

aber denkt ihr es lohnt sich ein Buch über die Win32API zu kaufen?
So umfangreich wie die ist?

8

16.07.2006, 17:26

IMHO: Nein.

Es gibt da "den Petzold", DAS WinApi-Buch überhaupt. Aber ich denke, es reicht,

- in Foren wie diesem zu fragen (Leute die merh Ahnung haben - z.B. nix da)
- ein Tutorial oder Beispiel zu einem Algo in Google zu suchen
- irgendetwas in die win32.hlp einzutippen oder
- (gleichbedeutend) msdn.microsoft.com zu suchen und da sinnfreies einzutippen.

So mach ich es immer. ^^

9

16.07.2006, 17:29

ja nur irgendwo muss ich anfangen. Aber ein englisches tutorial das wahrscheinlich einen schlechten programmierstil hat (was ich nicht erkennen kann aber bei dem nix da wahrscheinlich die Nase rümpfen würde) uund bei dem ich das ein oder andere vielleicht nicht so richtig verstehe wegen meiner bescheidenen englisch künste ein relativ schlechter Anfang!

Das Petzold Buch eignet sich wahrscheinlich auch nicht für den anfang sondern mehr so für fortgeschrittende, oder?

Fred

Supermoderator

Beiträge: 2 121

Beruf: Softwareentwickler

  • Private Nachricht senden

10

16.07.2006, 17:41

Also ich werd mir demnächst(wenn ich Geld hab) den Petzold zulegen.

Werbeanzeige