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

21.04.2007, 19:15

und weiter gehts...

Ich habe diesen Code von einer Webseite:
***.cpp

Quellcode

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
#define STRICT

#include <windows.h>
LRESULT CALLBACK WndProc(HWND, UINT, WPARAM, LPARAM);
const char szAppName[] = "DungeonArmy";
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,
                       "DungeonArmy",
                       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);
}

Aber es kommt ein Fehler:
LIBCD.lib(crt0.obj) : error LNK2001: Nichtaufgeloestes externes Symbol _main
Debug/DungeonArmy.exe : fatal error LNK1120: 1 unaufgeloeste externe Verweise
Fehler beim Ausführen von link.exe.

DungeonArmy.exe - 2 Fehler, 0 Warnung(en)

Ich weiss zwar warin das Problem ungefähr liegt aber nicht wie man es behebt.

PS:habe Visual C++ 6.0 Professional Edition

dot

Supermoderator

Beiträge: 9 757

Wohnort: Graz

  • Private Nachricht senden

2

21.04.2007, 19:16

das prolem ist, das dieser code eine win32 anwendung ist, du aber eine konsolenanwendung erstellt hast...

EDIT: achja verwend in zukunft bitte code tags ;)

David_pb

Community-Fossil

Beiträge: 3 886

Beruf: 3D Graphics Programmer

  • Private Nachricht senden

3

21.04.2007, 19:16

Du musst bei Visual Studio ein Win32 Projekt erstellen, kein Konsolenprojekt (oder wie das heißt).

Edit: grmpf :x
@D13_Dreinig

dot

Supermoderator

Beiträge: 9 757

Wohnort: Graz

  • Private Nachricht senden

4

21.04.2007, 19:17

:lol: schon zum zweiten mal heute :p

5

21.04.2007, 21:06

Ok hab ich. Doch jetzt wird nichts angezeigt, obwohl es geht.

dot

Supermoderator

Beiträge: 9 757

Wohnort: Graz

  • Private Nachricht senden

6

21.04.2007, 22:27

Zitat von »"Programmstein"«

Doch jetzt wird nichts angezeigt, obwohl es geht.


???

du wirst ein leeres fenster zu sehen bekommen in dessen titelzeile "DungeonArmy" steht. was du dir davon versprichst und was das mit dem thema dieses threads zu tun hat? ich hab keine ahnung^^

7

22.04.2007, 17:04

...

Nein, Nein..
Das Fenster wird nicht angezeigt.

8

22.04.2007, 17:23

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

wchar_t name[] = L"DungeonArmy";

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


int WINAPI WinMain (HINSTANCE hInstance, HINSTANCE hPrevInstance,
                    char *szCmdLine, int iCmdShow)
{
    
    MSG             msg     ;
    WNDCLASSW       wndclass;
    HWND            hwnd    ;
    HDC             hdc     ;



    ZeroMemory(&hwnd,     sizeof(HWND))  ;
    ZeroMemory(&msg,      sizeof(MSG))    ;
   ZeroMemory(&wndclass, sizeof(WNDCLASSW));

    wndclass.style         = CS_HREDRAW | CS_VREDRAW             ;
    wndclass.lpfnWndProc   = WndProc                             ;
    wndclass.cbClsExtra    = 0                                   ;
    wndclass.cbWndExtra    = 0                                   ;
    wndclass.hInstance     = hInstance                           ;
    wndclass.hIcon         = NULL                                ;
    wndclass.hbrBackground = (HBRUSH) GetStockObject (GRAY_BRUSH);
    wndclass.lpszMenuName  = NULL;
    wndclass.lpszClassName = name;

    if (!RegisterClass(&wndclass))
    {
        MessageBoxW(hwnd, L"Die Anwendung konnte nicht richtig initalisiert werden. Wenn es nicht klappt beten sie ein bisschen vielleicht klappts dann! ;-)", L"Error", MB_OK);
        return 0;
    }

   


    hwnd = CreateWindow (name, name,WS_OVERLAPPEDWINDOW,
                         CW_USEDEFAULT, CW_USEDEFAULT,
                         1024, 768,
                         NULL, NULL, hInstance, NULL)   ;


    
    ShowWindow (hwnd, iCmdShow);
    UpdateWindow (hwnd)        ;

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

    return (static_cast<int>(msg.wParam));
}


LRESULT CALLBACK WndProc(HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam)
{
    switch(message)
    {
    case WM_CREATE:
        break;
    case WM_DESTROY:
        MessageBeep(50);
        PostQuitMessage(0);
        break;
    }
    return DefWindowProc (hwnd, message, wParam, lParam);
}


So müsste dein Fenster angezeigt werden! ;-)


Noch ein Tipp:
Wenn du in Zukunft vor hast WIndowsprogramme zuschreiben dann führt kein Weg anDIESEMBuch vorbei!
Das Böse ist des Menschensbeste Kraft - Friedrich Nietzsche

9

22.04.2007, 19:42

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
int APIENTRY WinMain(HINSTANCE hInstance,
                     HINSTANCE hPrevInstance,
                     LPSTR     lpCmdLine,
                     int       nCmdShow )
{
//Das Programm

#define STRICT
#include <windows.h> 

wchar_t name[] = L"DungeonArmy"; 

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


int WINAPI WinMain (HINSTANCE hInstance, HINSTANCE hPrevInstance, 
                    char *szCmdLine, int iCmdShow) 
{ 
    
    MSG             msg        ; 
    WNDCLASSW       wndclass; 
    HWND            hwnd    ; 
    HDC                hdc        ; 



    ZeroMemory(&hwnd,     sizeof(HWND))  ; 
    ZeroMemory(&msg,      sizeof(MSG))      ; 
   ZeroMemory(&wndclass, sizeof(WNDCLASSW)); 

    wndclass.style         = CS_HREDRAW | CS_VREDRAW             ; 
    wndclass.lpfnWndProc   = WndProc                             ; 
    wndclass.cbClsExtra    = 0                                     ; 
    wndclass.cbWndExtra    = 0                                     ; 
    wndclass.hInstance     = hInstance                             ; 
    wndclass.hIcon         = NULL                                 ; 
    wndclass.hbrBackground = (HBRUSH) GetStockObject (GRAY_BRUSH); 
    wndclass.lpszMenuName  = NULL; 
    wndclass.lpszClassName = name; 

    if (!RegisterClass(&wndclass)) 
    { 
        MessageBoxW(hwnd, L"Die Anwendung konnte nicht richtig initalisiert werden. Wenn es nicht klappt beten sie ein bisschen vielleicht klappts dann! ;-)", L"Error", MB_OK); 
        return 0; 
    } 

    


    hwnd = CreateWindow (name, name,WS_OVERLAPPEDWINDOW, 
                         CW_USEDEFAULT, CW_USEDEFAULT, 
                         1024, 768, 
                         NULL, NULL, hInstance, NULL)    ; 


    
    ShowWindow (hwnd, iCmdShow); 
    UpdateWindow (hwnd)           ; 

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

    return (static_cast<int>(msg.wParam)); 
} 


LRESULT CALLBACK WndProc(HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam) 
{ 
    switch(message) 
    { 
    case WM_CREATE: 
        break; 
    case WM_DESTROY: 
        MessageBeep(50); 
        PostQuitMessage(0); 
        break; 
    } 
    return DefWindowProc (hwnd, message, wParam, lParam); 
}
    return 0;
}


Fehler:
c:\martins-xargon\dungeonarmy\dungeonarmy.cpp(8) : error C2146: Syntaxfehler : Fehlendes ';' vor Bezeichner 'WinMain'
c:\martins-xargon\dungeonarmy\dungeonarmy.cpp(8) : fatal error C1004: Unerwartetes Dateiende gefunden
Fehler beim Ausführen von cl.exe.

DungeonArmy.exe - 2 Fehler, 0 Warnung(en)

Vorhin gings aber seit Heute geht er net, noch deiner noch meiner.
PS:Antwort bitte als C++ Code.

dot

Supermoderator

Beiträge: 9 757

Wohnort: Graz

  • Private Nachricht senden

10

22.04.2007, 19:58

:shock:


C-/C++-Quelltext

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
int APIENTRY WinMain(HINSTANCE hInstance,
                     HINSTANCE hPrevInstance,
                     LPSTR     lpCmdLine,
                     int       nCmdShow )
{
//Das Programm

#define STRICT
#include <windows.h>

wchar_t name[] = L"DungeonArmy";

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


int WINAPI WinMain (HINSTANCE hInstance, HINSTANCE hPrevInstance,
                    char *szCmdLine, int iCmdShow)
{ 


wie soll das bitte funktionieren?

nimm den code den Theprogrammer gepostet hat, der geht.

Werbeanzeige