Herzlich Willkommen, lieber Gast!
  Sie befinden sich hier:

  Forum » C / C++ (WinAPI, Konsole) » Windows Fenster programmieren

Forum | Hilfe | Team | Links | Impressum | > Suche < | Mitglieder | Registrieren | Einloggen
  Quicklinks: MSDN-Online || STL || clib Reference Grundlagen || Literatur || E-Books || Zubehör || > F.A.Q. < || Downloads   

Autor Thread - Seiten: > 1 <
000
11.02.2006, 20:33 Uhr
Marco15



Hi Leuts!

Hab mir das Buch Spieleprogrammierung mit C++ und Genesis3d für Kids gekauft und da beginnt man eben, indem man ein Windowsfenster programmiert. Tja. Ein Haufen Quelltext und meine Compiler wollen den nicht kompillieren. Jeder Compiler gibt aber irgendwie andere Fehlermeldungen aus. Dadurch, dass man mit dem Buch entweder in Borland C++ 6 oder in Visual C++ 7 arbeiten sollte und ich nur die Auorenversion von VC++ 6 hab, hab ich eben in Borland programmiert:
WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow)
{
WNDCLASS Win;

MSG msg;
Win.cbClsExtra = 0;
Win.cbWndExtra = 0;
Win.Instance = hInstance;
Win.hIcon = LoadIcon(hInstance, IDI_APPLICATION);
Win.hCursor = LoadCursor(NULL, IDC_ARROW);
Win.hbrBackground=
(HBRUSH)GetStockObject(BLACK_BRUSH);
Win.style = CS_HREDRAW | CS_VREDRAW;
Win.IpfnWndProc = WndProc;
Win.IpszClassName = "???";
Win.IpszMenuName = NULL;
RegisterClass(&Win);
GHandle = CreateWindow(Win.lpszClassName,
"Windows Minimum - [Esc]=Ende", WS.TILED,
CW_USEDEFAULT, CW_USEDEFAULT, MaxWidth,
MaxHeight, NULL, NULL, hInstance, NULL);
if(!GHandle)
{return 0;
}
ShowWindow (GHandle, nCmdShow);
UpdateWindow(GHandle);
isRunning = true;
while (isRunning)
{
while
(PeekMessage (&msg, NULL, 0, 0, PM_NOREMOVE))
{
if(!GetMessage(&msg, NULL, 0, 0))
{
isRunning = false;
break;
}
TranslateMessage(&msg);
DispatchMessage(&msg);
}
}
return 1;

}

Ich bin jetzt den Quellttext 2 Mal mit voller Konzentration und mit dem Buch neben mir durchgegangen, aber ich hab nichts mehr entdeckt(vorher waren es noch mehr Fehler).

Und die Fehlermeldungen sind:

E2451:Undefiniertes Symbol 'WndProc'
E2451:Undefiniertes Symbold 'GHandle'
--------------------------'MaxWidth'
--------------------------'MaxHeight'
---------------------------'IsRunning'

Ich hab echt alles mit dem Buch verglichen, aber es geht nichts weiter. Kann mir irgendwer helfen, bitte?

LG Marco

Dieser Post wurde am 11.02.2006 um 20:37 Uhr von Marco15 editiert.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
001
11.02.2006, 21:11 Uhr
xXx
Devil


hmm OK:

Also... nimm am besten Visual C++ 2005 Express Edition... oder halt die 2003er Version...

also: 1. wir besitzen Codetags
2.
C++:
#include <windows.h>

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

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

    szWindowClass     = _T("TestKlasse");
    szTitle        = _T("Man... hab ich mir da nen scheiß Buch gekauft -.-");

    WNDCLASSEX wcex;
    wcex.cbSize         = sizeof(WNDCLASSEX);
    wcex.style        = CS_HREDRAW | CS_VREDRAW;
    wcex.lpfnWndProc        = (WNDPROC)WndProc;
    wcex.cbClsExtra        = 0;
    wcex.cbWndExtra        = 0;
    wcex.hInstance        = hInstance;
    wcex.hIcon        = LoadIcon(hInstance, (LPCTSTR)IDI_APPLICATION);
    wcex.hCursor        = LoadCursor(NULL, IDC_ARROW);
    wcex.hbrBackground    = (HBRUSH)(COLOR_WINDOW+1);
    wcex.lpszMenuName    = NULL;
    wcex.lpszClassName    = szWindowClass;
    wcex.hIconSm        = LoadIcon(wcex.hInstance, (LPCTSTR)IDI_SMALL);

    RegisterClassEx(&wcex);

    // Perform application initialization:
    HWND hWindow;

       hInst = hInstance; // Store instance handle in our global variable

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

       if (!hWindow)
       {
              return FALSE;
       }

       ShowWindow(hWindow, nCmdShow);
       UpdateWindow(hWindow);

    // Main message loop:
    while (GetMessage(&msg, NULL, 0, 0))
    {
        TranslateMessage(&msg);
        DispatchMessage(&msg);
    }

    return (int) msg.wParam;
}

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);
        break;
    case WM_PAINT:
        hdc = BeginPaint(hWnd, &ps);
        EndPaint(hWnd, &ps);
        break;
    case WM_DESTROY:
        PostQuitMessage(0);
        break;
    default:
        return DefWindowProc(hWnd, message, wParam, lParam);
    }
    return 0;
}


Ich würde mal sagen.... hol dir erst nen Buch für die C++ Grundlagen... dann würde dir hier auffallen... was hier flasch ist :P

Dieser Post wurde am 11.02.2006 um 21:12 Uhr von xXx editiert.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
002
11.02.2006, 22:03 Uhr
Marco15



Ja, das is es ja. Ich kann ja C++ schon. Naja, das mit der Objektorientierung sitzt noch nicht ganz fest und bei Zeigern krieg ich ne Gänsehaut, aber sonst kann ich alles(lol....gerade auf die OO kommts in C++ ja an).

Aber wenn ich mir den Quelltext da anschau, dann erkenn ich nix, aber auch gar nix von C++ wieder. Außer die Schleifen und die if Abfragen da. Aber sonst. Und das andere mit diesen Name.Name Zeugs schaut für mich nach OO aus, worin ich noch nicht wirklich Erfahrung hab. Ich wollt nur mal ausprobieren. Aber selbst wenn ich die OO perfekt könnte, denk ich nicht, dass mir der Quelltext da oben was wirklichj sinnvolles sagen würde.

Thx für die Antwort

LG Marco
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
003
12.02.2006, 00:14 Uhr
Marco15



Aber wenn deines richtig ist, dann müsste ja das im Buch falsch sein, oder?
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
004
12.02.2006, 01:15 Uhr
Hans
Library Walker
(Operator)


Hi,

Zitat von Marco15:
Aber wenn ich mir den Quelltext da anschau, dann erkenn ich nix, aber auch gar nix von C++ wieder. Außer die Schleifen und die if Abfragen da. Aber sonst.

Diesen Schock erlebt jeder, wenn er von Standard C++ (oder C) auf Windows umwechselt. Ist aber nicht weiter schlimm.

Zitat:
Und das andere mit diesen Name.Name Zeugs schaut für mich nach OO aus,

Ist es aber nicht. Da werden den Elementen der Struktur (struct) wcex vom Typ WNDCLASSEX Werte zugewiesen. Ansonsten vermute ich auch, das Du
C++:
#include <windows.h>

am Anfang vergessen hast.

Zitat:
Aber selbst wenn ich die OO perfekt könnte, denk ich nicht, dass mir der Quelltext da oben was wirklichj sinnvolles sagen würde.

In diesem Fall hilft nur ein Buch über die Grundlagen der Windowsprogrammierung. Denn wenn man C++ kann, kann man noch lange nicht Windows Programmieren.

Zitat:
Aber wenn deines richtig ist, dann müsste ja das im Buch falsch sein, oder?

Jo, kann immer wieder mal vorkommen, das ein Autor mal eine Kleinigkeit vergisst.

Hans
--
Man muss nicht alles wissen, aber man sollte wissen, wo es steht. Zum Beispiel hier: Nachdenkseiten oder Infoportal Globalisierung.

Dieser Post wurde am 12.02.2006 um 01:19 Uhr von Hans editiert.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
005
12.02.2006, 11:02 Uhr
Marco15



Thx für die Antwort

So, jetzt les ich nochmal mein C++ für Dummies Buch von hinten bis vorne, dann hol ich mir ein Buch zur Windowsprogramierung und dann mach ich mit dem Buch für Spieleprogrammierung weiter

Danke für eure Hilfen

LG Marco
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
006
12.02.2006, 23:24 Uhr
Hans
Library Walker
(Operator)


Hi,

ich fürchte, lesen allein genügt nicht; - Du musst schon auch die Beispiele durcharbeiten. Also sprich: mal ein paar Parameter ändern und sehen was passiert. Dann mal eine Zeile auskommentieren, und wieder sehen, was passiert. Und wenn Du dann begriffen hast, was wozu gut ist, dann erst weiter lesen. Klingt mühsam, weis ich. Aber lass dabei auch einfach mal den Spieltrieb heraus, und probiere verschiedene Möglichkeiten aus. Dann kommt das Verständniss fast nebenbei...

Hans
--
Man muss nicht alles wissen, aber man sollte wissen, wo es steht. Zum Beispiel hier: Nachdenkseiten oder Infoportal Globalisierung.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
007
13.02.2006, 17:06 Uhr
Marco15



@Hans- Ja, mit Lesen meinte ich natürlich das

Um es zu verstehn tu ich nicht nur Parameter austauschen(is ja langweilig) sondern oft kommen mir selber Ideen, was mit dem derzeitigen Tema zusammenhängt und ich schreib halt eigene Programme oder ich lese mir ein Besipiel durch und warte ne Stunde bevor ich es dann nachprogarmmiere. Wenn ichs wieder vergessen hab, dann les ichs halt nochmal
Und wenn ich mal demotiviert bin spiel ich meistens Half Life 2 mit der bombastischen Grafik und Physik Dann kommt ganz schnell wieder die Lust nach C++(HL wurde ja in C++ programmiert, zumindest die Engine)und ich les weiter.
Was ic nur nervig finde, ist wenn Autoren sich nicht ausdrücken können, oder es so schreiben, dass man eigentlich schon Vorkenntnisse braucht. Das bemerke ich auch, weil ich zum Glück mehrere Bücher zu gleich lese. Mit einem Autor alleine komm ich nicht aus, weil der eine das besser erklärt und der andere das. Und dann versteht man erst von einem anderen Autor, was der andere gemeint hat und empfindet es dann natürlich als logisch.Außerdem helfen mir auch Tutorilas aus dem Internet sehr viel, da hier die Kapitel alle vollständig durchgearbeitet werden, aber sie sind kurz gefasst und nicht so wie in manchen Büchern, dass man dann Stunden über Funktionen etc. redet.

LOL. So, jetzt ein bisschen über meine Lernart gesprochen, wie ichs am besten finde. Vielleicht dient das ja irgendeinen ebenfalls neuen Programmierer als Vorlage

LG Marco
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
Seiten: > 1 <     [ C / C++ (WinAPI, Konsole) ]  


ThWBoard 2.73 FloSoft-Edition
© by Paul Baecher & Felix Gonschorek (www.thwboard.de)

Anpassungen des Forums
© by Flo-Soft (www.flo-soft.de)

Sie sind Besucher: