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

Fred

Supermoderator

Beiträge: 2 121

Beruf: Softwareentwickler

  • Private Nachricht senden

11

10.07.2007, 23:24

D.h. du hast ein Fenster?
Na Prima und jetzt fang an undlerne C++ :D

chris1982nrw

Frischling

  • »chris1982nrw« ist der Autor dieses Themas

Beiträge: 31

Wohnort: Köln

  • Private Nachricht senden

12

10.07.2007, 23:47

Is jetzt folgendermaßen:

Datei -> Neu -> Projekt
Win32 -> Win32 Konsolenanwendung

Name is: Probe1

Anwendungstyp = Windows-Anwendung
Zusätzliche Optionen = (grau hinterlegt mit Hacken) "vorkompilierter Header"

ansonsten nix mehr.

Dann kommt die Headerdatei automatisch:

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
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
// Probe2.cpp : Definiert den Einstiegspunkt für die Anwendung.

//


#include "stdafx.h"
#include "Probe2.h"

#define MAX_LOADSTRING 100

// Globale Variablen:

HINSTANCE hInst;                                // Aktuelle Instanz

TCHAR szTitle[MAX_LOADSTRING];                  // Titelleistentext

TCHAR szWindowClass[MAX_LOADSTRING];            // Klassenname des Hauptfensters


// Vorwärtsdeklarationen der in diesem Codemodul enthaltenen Funktionen:

ATOM                MyRegisterClass(HINSTANCE hInstance);
BOOL                InitInstance(HINSTANCE, int);
LRESULT CALLBACK    WndProc(HWND, UINT, WPARAM, LPARAM);
INT_PTR CALLBACK    About(HWND, UINT, WPARAM, LPARAM);

int APIENTRY _tWinMain(HINSTANCE hInstance,
                     HINSTANCE hPrevInstance,
                     LPTSTR    lpCmdLine,
                     int       nCmdShow)
{
    UNREFERENCED_PARAMETER(hPrevInstance);
    UNREFERENCED_PARAMETER(lpCmdLine);

    // TODO: Hier Code einfügen.

    MSG msg;
    HACCEL hAccelTable;

    // Globale Zeichenfolgen initialisieren

    LoadString(hInstance, IDS_APP_TITLE, szTitle, MAX_LOADSTRING);
    LoadString(hInstance, IDC_PROBE2, szWindowClass, MAX_LOADSTRING);
    MyRegisterClass(hInstance);

    // Anwendungsinitialisierung ausführen:

    if (!InitInstance (hInstance, nCmdShow))
    {
        return FALSE;
    }

    hAccelTable = LoadAccelerators(hInstance, MAKEINTRESOURCE(IDC_PROBE2));

    // Hauptmeldungsschleife:

    while (GetMessage(&msg, NULL, 0, 0))
    {
        if (!TranslateAccelerator(msg.hwnd, hAccelTable, &msg))
        {
            TranslateMessage(&msg);
            DispatchMessage(&msg);
        }
    }

    return (int) msg.wParam;
}



//

//  FUNKTION: MyRegisterClass()

//

//  ZWECK: Registriert die Fensterklasse.

//

//  KOMMENTARE:

//

//    Sie müssen die Funktion verwenden,  wenn Sie möchten, dass der Code

//    mit Win32-Systemen kompatibel ist, bevor die RegisterClassEx-Funktion

//    zu Windows 95 hinzugefügt wurde. Der Aufruf der Funktion ist wichtig,

//    damit die kleinen Symbole, die mit der Anwendung verknüpft sind,

//    richtig formatiert werden.

//

ATOM MyRegisterClass(HINSTANCE hInstance)
{
    WNDCLASSEX wcex;

    wcex.cbSize = sizeof(WNDCLASSEX);

    wcex.style          = CS_HREDRAW | CS_VREDRAW;
    wcex.lpfnWndProc    = WndProc;
    wcex.cbClsExtra     = 0;
    wcex.cbWndExtra     = 0;
    wcex.hInstance      = hInstance;
    wcex.hIcon          = LoadIcon(hInstance, MAKEINTRESOURCE(IDI_PROBE2));
    wcex.hCursor        = LoadCursor(NULL, IDC_ARROW);
    wcex.hbrBackground  = (HBRUSH)(COLOR_WINDOW+1);
    wcex.lpszMenuName   = MAKEINTRESOURCE(IDC_PROBE2);
    wcex.lpszClassName  = szWindowClass;
    wcex.hIconSm        = LoadIcon(wcex.hInstance, MAKEINTRESOURCE(IDI_SMALL));

    return RegisterClassEx(&wcex);
}

//

//   FUNKTION: InitInstance(HINSTANCE, int)

//

//   ZWECK: Speichert das Instanzenhandle und erstellt das Hauptfenster.

//

//   KOMMENTARE:

//

//        In dieser Funktion wird das Instanzenhandle in einer globalen Variablen gespeichert, und das

//        Hauptprogrammfenster wird erstellt und angezeigt.

//

BOOL InitInstance(HINSTANCE hInstance, int nCmdShow)
{
   HWND hWnd;

   hInst = hInstance; // Instanzenhandle in der globalen Variablen speichern


   hWnd = CreateWindow(szWindowClass, szTitle, WS_OVERLAPPEDWINDOW,
      CW_USEDEFAULT, 0, CW_USEDEFAULT, 0, NULL, NULL, hInstance, NULL);

   if (!hWnd)
   {
      return FALSE;
   }

   ShowWindow(hWnd, nCmdShow);
   UpdateWindow(hWnd);

   return TRUE;
}

//

//  FUNKTION: WndProc(HWND, UINT, WPARAM, LPARAM)

//

//  ZWECK:  Verarbeitet Meldungen vom Hauptfenster.

//

//  WM_COMMAND  - Verarbeiten des Anwendungsmenüs

//  WM_PAINT    - Zeichnen des Hauptfensters

//  WM_DESTROY  - Beenden-Meldung anzeigen und zurückgeben

//

//

LRESULT CALLBACK WndProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam)
{
    int wmId, wmEvent;
    PAINTSTRUCT ps;
    HDC hdc;

    switch (message)
    {
    case WM_COMMAND:
        wmId    = LOWORD(wParam);
        wmEvent = HIWORD(wParam);
        // Menüauswahl bearbeiten:

        switch (wmId)
        {
        case IDM_ABOUT:
            DialogBox(hInst, MAKEINTRESOURCE(IDD_ABOUTBOX), hWnd, About);
            break;
        case IDM_EXIT:
            DestroyWindow(hWnd);
            break;
        default:
            return DefWindowProc(hWnd, message, wParam, lParam);
        }
        break;
    case WM_PAINT:
        hdc = BeginPaint(hWnd, &ps);
        // TODO: Hier den Zeichnungscode hinzufügen.

        EndPaint(hWnd, &ps);
        break;
    case WM_DESTROY:
        PostQuitMessage(0);
        break;
    default:
        return DefWindowProc(hWnd, message, wParam, lParam);
    }
    return 0;
}

// Meldungshandler für Infofeld.

INT_PTR CALLBACK About(HWND hDlg, UINT message, WPARAM wParam, LPARAM lParam)
{
    UNREFERENCED_PARAMETER(lParam);
    switch (message)
    {
    case WM_INITDIALOG:
        return (INT_PTR)TRUE;

    case WM_COMMAND:
        if (LOWORD(wParam) == IDOK || LOWORD(wParam) == IDCANCEL)
        {
            EndDialog(hDlg, LOWORD(wParam));
            return (INT_PTR)TRUE;
        }
        break;
    }
    return (INT_PTR)FALSE;
}


wenn ich das dann kompiliere, dann geht ein Windows-Fenster auf
was halt nur weiß ist.

Das is dann doch gut, oder ?[/cpp]

David_pb

Community-Fossil

Beiträge: 3 886

Beruf: 3D Graphics Programmer

  • Private Nachricht senden

13

11.07.2007, 07:39

Zitat von »"chris1982nrw"«


Das is dann doch gut, oder ?[/cpp]


Ja, is gut. Genau das was im Code steht.
@D13_Dreinig

14

11.07.2007, 13:48

Zitat von »"grek40"«

Man sollte immer daran denken, dass es auch mal ne neue Version vom SDK geben kann - wenn man alles in einen Topf haut kann man auch gleich einpacken.


Stimmt auch wieder. :(
Sprachen: C/C++, C#, Assembler (16-Bit), QuickBASIC

Faule Socke

Community-Fossil

Beiträge: 1 915

Wohnort: Schreibtischstuhl

  • Private Nachricht senden

15

11.07.2007, 14:03

ich würd an deiner stelle vorkompilierte header ausmachen und ein hacken bei leeres projekt machen(falls du das net schon gemacht hast).


Socke

Werbeanzeige