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

Fab

Treue Seele

  • »Fab« ist der Autor dieses Themas

Beiträge: 85

Wohnort: Iwo in der Eifel - nähe von Euskirchen

Beruf: Schüler

  • Private Nachricht senden

1

30.12.2008, 14:06

Ein weiteres WINAPI Problem

So.
Nachdem mein letztes WinApi Problem gelöst war, bin ich direkt zum nächsten Tutorial über dieses Thema voran geschritten.
Es ging dabei darum, dass ich ein einfaches leeres Fenster erstelle.
Nur es kommt nicht, anstattdessen habe ich wieder eine ganze Reihe Linkerfehler.

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
#pragma comment(lib, "user32.lib")
#include <windows.h>

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

int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, PSTR szCmdLine, int nCmdShow) {

    const char szAppName[] = "Ein eigenes Fenster";


    //WindowHandle

    //

    HWND hWnd;

    //Struktur für Nachrichten

    //

    MSG msg;

    //Fensterklasse

    //

    WNDCLASS wc;

    //technische Verhalten festlegen

    //

    wc.style = CS_HREDRAW |CS_VREDRAW; /*
                                       CS_HREDRAW = Horizontal neuzeichnen
                                       CS_VREDRAW = Vertikal neuzeichnen
                                       */

    //Addresse der Funktion, die die Nachrichtenverarbeiten soll, übergeben

    //

    wc.lpfnWndProc = WndProc;

    //Extraspeicher reservieren

    //

    wc.cbWndExtra = 0;
    wc.cbClsExtra = 0;

    //Windowhandle übergeben

    //

    wc.hInstance = hInstance;

    //Cursor zuweisen/laden

    //

    wc.hCursor = LoadCursor(NULL, IDC_ARROW);

    //Icon zuweisen/laden

    //

    wc.hIcon = LoadIcon(NULL, IDI_APPLICATION);

    //Farbe zuweisen

    //

    wc.hbrBackground = static_cast<HBRUSH>(GetStockObject(WHITE_BRUSH));

    //Speichern des Fensterklassennamen

    //

    wc.lpszClassName = szAppName;

    //Menü?

    //

    wc.lpszMenuName = NULL;

    //Fensterklasse im Fenstermanager anmelden

    //

    RegisterClass(&wc);

    //Fenster erzeugen

    //

    hWnd = CreateWindow(
        szAppName,
        "WinApi",   //Text in der Titelleiste

        WS_OVERLAPPEDWINDOW,    //Fensterstil

        CW_USEDEFAULT,  //X-Position auf Screen

        CW_USEDEFAULT,  //Y-Position auf Screen

        CW_USEDEFAULT,  //Fensterbreite

        CW_USEDEFAULT,  //Fensterhöhe

        NULL,
        NULL,
        hInstance,      //Fensterhandle

        NULL
        );
    
    //Fenster anzeigen lassen

    //

    ShowWindow(hWnd, nCmdShow);
    
    //Fenster neuzeichnen lassen

    //

    UpdateWindow(hWnd);

    //Nachrichtenschleife

    //

    while(GetMessage(&msg, NULL, 0, 0)) {

        //Verarbeitung von Tastaturereignissen

        //

        TranslateMessage(&msg);

        //Verteilen der Nachrichten an die jeweiligen Windowsprozeduren

        //

        DispatchMessage(&msg);

    }

    return msg.wParam;
}

//Verarbeitung der Nachrichten, der Fensterklasse

LRESULT CALLBACK WndProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam) {
    switch(message) {
        case WM_DESTROY: {
            PostQuitMessage(0);
            return 0;
                         }
    }
    
    //Restliche Nachrichten weiterreichen

    //

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


Zitat


------ Erstellen gestartet: Projekt: WindowsFenster, Konfiguration: Debug Win32 ------
Kompilieren...
main.cpp
c:\dokumente und einstellungen\fab\eigene dateien\visual studio 2005\projects\windowsfenster\windowsfenster\main.cpp(105) : warning C4244: 'return': Konvertierung von 'WPARAM' in 'int', möglicher Datenverlust
Verknüpfen...
main.obj : error LNK2019: Verweis auf nicht aufgelöstes externes Symbol "__imp__GetStockObject@4" in Funktion "_WinMain@16".
C:\Dokumente und Einstellungen\Fab\Eigene Dateien\Visual Studio 2005\Projects\WindowsFenster\Debug\WindowsFenster.exe : fatal error LNK1120: 1 nicht aufgelöste externe Verweise.
Das Buildprotokoll wurde unter "file://c:\Dokumente und Einstellungen\Fab\Eigene Dateien\Visual Studio 2005\Projects\WindowsFenster\WindowsFenster\Debug\BuildLog.htm" gespeichert.
WindowsFenster - 2 Fehler, 1 Warnung(en)
========== Erstellen: 0 erfolgreich, Fehler bei 1, 0 aktuell, 0 übersprungen ==========


Bitte helft mir.

Greetings Fab
Eins hab ich erkannt - ich werde immer Schüler bleiben, ein Leben lang

Anonymous

unregistriert

2

30.12.2008, 14:08

Also irgendwie hast du deinen Linker zerschossen. Wie erstellst du ein Projekt, was machst du genau?

Fab

Treue Seele

  • »Fab« ist der Autor dieses Themas

Beiträge: 85

Wohnort: Iwo in der Eifel - nähe von Euskirchen

Beruf: Schüler

  • Private Nachricht senden

3

30.12.2008, 14:10

Visual C++ '05 Express Edition

Also ich habe mein Projekt nach mehreren Kompilierungsversuchen bereinigt. Und dann mit F7 die Projektmappe erstellt.
Das ist quasi alles.
Dann gehts nicht mehr weiter.

MFG
Fab
;)
Eins hab ich erkannt - ich werde immer Schüler bleiben, ein Leben lang

Anonymous

unregistriert

4

30.12.2008, 14:10

Erstell ein neues Projekt, ein Leeres Projekt!

Fab

Treue Seele

  • »Fab« ist der Autor dieses Themas

Beiträge: 85

Wohnort: Iwo in der Eifel - nähe von Euskirchen

Beruf: Schüler

  • Private Nachricht senden

5

30.12.2008, 14:16

Also nich neu erstellen

Also meinst du ich soll nicht neu erstellen machen, sondern das ganze Programm bzw. den Code in eine neue Projektmappe portieren?

MFG
Fab
;)
Eins hab ich erkannt - ich werde immer Schüler bleiben, ein Leben lang

Anonymous

unregistriert

6

30.12.2008, 14:19

nichts portieren. LÖSCHEN!

Dann erstellst du ein neues sauberes Projekt. Du hast dir deine Projekt-"Mappe" sowas von heftig zerballert.

Fab

Treue Seele

  • »Fab« ist der Autor dieses Themas

Beiträge: 85

Wohnort: Iwo in der Eifel - nähe von Euskirchen

Beruf: Schüler

  • Private Nachricht senden

7

30.12.2008, 14:32

Versuchen

Ik
Dann werd ich das mal versuchen.
hab jetzt im Moment leider keine Zeit.

Melde mich dann heute Abend nochmal ;)

MFG
Fab
;)
Eins hab ich erkannt - ich werde immer Schüler bleiben, ein Leben lang

Anonymous

unregistriert

8

30.12.2008, 15:06

Zitat

Dann werd ich das mal versuchen.

Datei->Neu->Projekt. Schaffste dat?^^

Fab

Treue Seele

  • »Fab« ist der Autor dieses Themas

Beiträge: 85

Wohnort: Iwo in der Eifel - nähe von Euskirchen

Beruf: Schüler

  • Private Nachricht senden

9

30.12.2008, 16:28

Das meinte ich nicht :P

Das meinte ich nicht du Scherzkekes.
Klar kann ich selbst Projekte anlegen.

Meinte ich versuche es dann mal auf diese Weise ans laufen zu bringen ;)

Hab nur gerade leider keine Zeit ;)

Greetings Fab
;)
Eins hab ich erkannt - ich werde immer Schüler bleiben, ein Leben lang

Fab

Treue Seele

  • »Fab« ist der Autor dieses Themas

Beiträge: 85

Wohnort: Iwo in der Eifel - nähe von Euskirchen

Beruf: Schüler

  • Private Nachricht senden

10

31.12.2008, 12:56

Neues Projekt :(

Auch mit nem neuen Projekt geht das leider nicht :(
Woran kanns denn noch liegen ?

mb
Fab
;)
Eins hab ich erkannt - ich werde immer Schüler bleiben, ein Leben lang

Werbeanzeige