Problem bei #include <windows.h>

FroxX

Grünschnabel
Hidiho, ich nochmal :-)

Folgendes Problem:

Ich hab mit Dev-C++ (und auch mit Visual C++ getestet) ein Programm angefangen, also so ein Windows-Rahmenprogramm. Ich hab nun folgende Dateien:

GameShell.h
GameShell.cpp
GameRoutines.h
GameRoutines.cpp

Ich brauche den Windows-Header in beiden .cpp Files. Wie stell ich das an, bei mir gibts immer nen Fehler, weil man ja einen Header nicht mehrmals einbinden darf. Ich hab schon mit #ifndef, usw. rumprobiert, aber klappt auch nicht.

Für Hilfe wär ich sehr dankbar :-)

Gruß FroxX
 
GameShell.h:

Code:
#ifndef GAMESHELL_H
#define GAMESHELL_H

#define WIN32_LEAN_AND_MEAN

#include <windows.h>

//--------------------------------------------------------
//  MACROS
//--------------------------------------------------------

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

extern int screenwidth;
extern int screenheight;
extern int Farbtiefe;

//--------------------------------------------------------
// Wichtige Game-Funktions Prototypen
//--------------------------------------------------------

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

extern void GameInitialisierungsRoutine();
extern void GameMainRoutine();
extern void GameCleanUpRoutine();
extern void InitResolution();

#endif


GameShell.cpp:

Code:
//-------------------------------------------------------
//  DEFINES
//-------------------------------------------------------

#define WINDOW_CLASS_NAME "Game Shell Window"

//--------------------------------------------------------
//  INCLUDES
//--------------------------------------------------------

#include "GameShell.h"

//--------------------------------------------------------
//  GLOBALS
//--------------------------------------------------------

HWND      main_window_handle = NULL;
HINSTANCE hinstance_app      = NULL;

//--------------------------------------------------------
// Funktionsdefinitionen
//--------------------------------------------------------

LRESULT CALLBACK WindowProc(HWND hwnd,
                            UINT msg,
                            WPARAM wparam,
                            LPARAM lparam)
{
    PAINTSTRUCT ps;
    HDC         hdc;
     
    // Nachrichtenverarbeitung
    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;
    
    // Fenstereigenschaften festlegen
    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);
    
    InitResolution();    
        
    if(!(hwnd = CreateWindowEx(NULL, 
                              WINDOW_CLASS_NAME, 
                              "My Game Shell", 
                              WS_OVERLAPPEDWINDOW | WS_VISIBLE,
                              0, 0,
                              screenwidth, screenheight,
                              NULL,
                              NULL,
                              hinstance,
                              NULL)))
    return(0);
    
    main_window_handle = hwnd;
    
    Game_Init();
    
    while(TRUE) // Nachrichtenweiterleitung
    {
        if(PeekMessage(&msg, NULL, 0, 0, PM_REMOVE))
        {
            if(msg.message==WM_QUIT)
            break;
            
            TranslateMessage(&msg);
            DispatchMessage(&msg);
        }
        
        Game_Main();
        
    }
    
    Game_Shutdown();
    
}
    
////////////////////////////////////////////////////////////////////

void Game_Init()
{
     GameInitialisierungsRoutine();
}

////////////////////////////////////////////////////////////////////

void Game_Main()
{
     // Mit ESC kann die Anwendung verlassen werden
     if(KEYDOWN(VK_ESCAPE))
         SendMessage(main_window_handle, WM_CLOSE, 0, 0);
         
     GameMainRoutine();
}

/////////////////////////////////////////////////////////////////////

void Game_Shutdown()
{
     GameCleanUpRoutine();
}

Fehlermeldungen (unter anderem):

- FILE undeclared
- fopen undeclared
- fscanf undeclared

Kann es sein, dass die gar nicht in der windows.h drin sind?
 
Oh, ok, das war's! :p

Jetzt krieg ich nur noch andere Fehlermeldungen, aber da weiss ich worans liegt.

Vielen Dank Tobias :-)

Gruß FroxX
 

Neue Beiträge

Zurück