Herzlich Willkommen, lieber Gast!
  Sie befinden sich hier:

  Forum » C / C++ (WinAPI, Konsole) » 2 Fehler beim Fenster erzeugen...

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
10.03.2010, 18:26 Uhr
Alex126



Hy,

gleich zu mienem Problem, ich hab mir ein Buch 3D-Spiele.mit.C++.und.DirectX.in.21.tagen. Bin leider ein c++ Neuling(komme von Delphi) und hab jetzt gleich bei dem ersten Programm im Buch folgendende Fehler:


C++:
#define WINDOW_CLASS_NAME "Game Shell Window"
#define WIN32_LEAN_AND_MEAN

#include <windows.h>

#define KEYDOWN(vk_code) ((GetAsyncKeyState(vk_code)&0x8000)?1:0)
#define KEYUP(vk_code)   ((GetAsyncKeyState(vk_code)&0x8000)?0:1)

HWND      main_window_handle = NULL;
HINSTANCE hinstance_app      = NULL;

void Game_Shutdown(void);
void Game_Init(void);
void Game_Main(void);

LRESULT CALLBACK WindowProc(HWND hwnd,
                            UINT msg,
                            WPARAM wparam,
                            LPARAM lparam)
{
    PAINTSTRUCT ps;
    HDC         hdc;

    switch(msg)
    {
    case WM_CREATE:
        {
            return(0);
        }
        break;

    case WM_PAINT:
    {
        hdc = BeginPaint(hwnd,&ps);
        EndPaint(hwnd,&ps);
        return(0);
    }
    break;

    case WM_DESTROY:
    {
        PostQuitMessage(0);
        return(0);
    }
    break;

    default:
    break;
    }
    return (DefWindowProc(hwnd, msg, wparam, lparam));
}

int WINAPI WinMain(HINSTANCE hinstance,
                   HINSTANCE hprevinstance,
                   LPSTR lpcmdline,
                   int ncmdshow)
{
    WNDCLASSEX winclass;
    HWND       hwnd;
    MSG        msg;


    winclass.cbSize = sizeof(WNDCLASSEX);
    winclass.style = CS_HREDRAW | CS_VREDRAW;
    winclass.lpfnWndProc = WindowProc;
    winclass.cbClsExtra = 0;
    winclass.cbWndExtra = 0;
    winclass.hInstance = hinstance;
    winclass.hIcon = LoadIcon(NULL, IDI_APPLICATION);
    winclass.hCursor = LoadCursor(NULL, IDC_ARROW);
    winclass.hbrBackground = (HBRUSH)GetStockObject(BLACK_BRUSH);
    winclass.lpszMenuName = NULL;
    winclass.lpszClassName = WINDOW_CLASS_NAME;
    winclass.hIconSm = LoadIcon(NULL, IDI_APPLICATION);

    hinstance_app = hinstance;

    if(!RegisterClassEx(&winclass))
        return(0);

    if(!(hwnd = CreateWindowEx(NULL,
                               WINDOW_CLASS_NAME,
                               L"My Game Shell",
                               WS_OVERLAPPEDWINDOW | WS_VISIBLE,
                               0,0,
                               800,600,
                               NULL,
                               NULL,
                               hinstance,
                               NULL)))
    return(0);

    main_window_handle = hwnd;

    Game_Init();

    while(true)
    {
        if(PeekMessage(&msg,NULL,0,0,PM_REMOVE))
        {
            if(msg.message == WM_QUIT)
                break;
            
            TranslateMessage(&msg);
            DispatchMessage(&msg);
        }

        Game_Main();
    }

    Game_Shutdown();

    return(msg.wParam);
}

void Game_init(void)
{}

void Game_Main(void)
{
    if(KEYDOWN(VK_ESCAPE))
        SendMessage(main_window_handle,WM_CLOSE,0,0);
}

void Game_Shutdown(void)
{}




und jetzt kommen folgende Fehlermeldungen:

1:= 1>.\main.cpp(73) : error C2440: '=': 'const char [18]' kann nicht in 'LPCWSTR' konvertiert werden

2:=1>.\main.cpp(90) : error C2664: 'CreateWindowExW': Konvertierung des Parameters 2 von 'const char [18]' in 'LPCWSTR' nicht möglich


Und ich hab keinen Ahnung warum der Fehler auftritt der Quelltext is exakt gleich mit dem der im Buch steht(bin wirklich jede Zeile einzeln Durchgegangen...)

ich hoffe ihr könnt mir helfen...xD
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
001
10.03.2010, 18:30 Uhr
0xdeadbeef
Gott
(Operator)



C++:
#define WINDOW_CLASS_NAME L"Game Shell Window"


Allerdings wäre es womöglich sinnvoll, die Stringliterale stattdessen in _T() zu verpacken. Siehe auch http://msdn.microsoft.com/en-us/library/se784sk6.aspx
--
Einfachheit ist Voraussetzung für Zuverlässigkeit.
-- Edsger Wybe Dijkstra

Dieser Post wurde am 10.03.2010 um 18:32 Uhr von 0xdeadbeef editiert.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
002
10.03.2010, 18:34 Uhr
Alex126



Danke das hat die Fehler behoben

Aber nun ist ein neuer aufgetreten^^

1>main.obj : error LNK2019: Verweis auf nicht aufgelöstes externes Symbol ""void __cdecl Game_Init(void)" (?Game_Init@@YAXXZ)" in Funktion "_WinMain@16".
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
003
10.03.2010, 18:44 Uhr
0xdeadbeef
Gott
(Operator)


Auf Groß/Kleinschreibung achten.
--
Einfachheit ist Voraussetzung für Zuverlässigkeit.
-- Edsger Wybe Dijkstra
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
004
10.03.2010, 18:48 Uhr
Alex126



OK danke für deine Hilfe... war echt gerade am Verzweifeln...xD
c++ ist doch etwas kleinlicher als Delphi!

Aber nun funktioniert das Programm...
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
005
10.03.2010, 18:50 Uhr
0xdeadbeef
Gott
(Operator)


Was du da machst ist eigentlich mehr C als C++ und mehr WinAPI als MFC. Ich schieb das ganze mal rüber ins WinAPI-Forum.


--
Einfachheit ist Voraussetzung für Zuverlässigkeit.
-- Edsger Wybe Dijkstra
 
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: