www.pudn.com > coolMEMORY.rar > WindowProc.cpp
//-----------------------------------------------------------------------------
// File: WindowProc.cpp
//-----------------------------------------------------------------------------
#include "AS\AS_Engine.h"
#include "ModuleHeaders.h"
// Functions: *****************************************************************
LRESULT CALLBACK WindowProc(HWND, unsigned, WPARAM, LPARAM);
///////////////////////////////////////////////////////////////////////////////
LRESULT CALLBACK WindowProc(HWND hWnd, unsigned uMsg, WPARAM wParam, LPARAM lParam)
{ // begin WindowProc()
BOOL bTempFullscreen;
char byTemp[256];
short i;
switch(uMsg)
{
case WM_PAINT:
i = _AS->FindWindowID(hWnd);
if(i == -1)
break;
_AS->pWindow[i].Draw();
break;
case WM_COMMAND:
switch(LOWORD(wParam))
{
// Game:
case ID_GAME_FILE_QUIT:
_AS->SetShutDown(TRUE);
break;
// Options:
case ID_OPTIONS_CONFIG:
bTempFullscreen = _ASConfig->bFullScreen;
_ASConfig->bFullScreen = FALSE;
ChangeDisplayMode();
_ASConfig->bFullScreen = bTempFullscreen;
hWnd = *_AS->pWindow[GAME_WINDOW_ID].GethWnd();
OpenConfigDialog(hWnd);
ChangeDisplayMode();
i = _AS->FindWindowID(hWnd);
if(i == -1)
break;
_AS->pWindow[i].Resize(_ASConfig->iWindowWidth, _ASConfig->iWindowHeight);
break;
// Help:
case ID_HELP_HELP:
OpenHelp();
break;
case ID_HELP_ABLAZESPACE:
_AS->WriteLogMessage("Open AblazeSpace homepage");
ShellExecute(0, "open", "http://www.ablazespace.de/", 0, 0, SW_SHOW);
break;
case ID_HELP_3DIMENSIONEN:
_AS->WriteLogMessage("Open 3Dimensionen homepage");
ShellExecute(0, "open", "http://www.3dimensionen.de/", 0, 0, SW_SHOW);
break;
case ID_HELP_RAPTUREMUSIC:
_AS->WriteLogMessage("Open RaptureMusic homepage");
ShellExecute(0, "open", "http://www.rapturemusic.de/", 0, 0, SW_SHOW);
break;
case ID_HELP_CREDITS:
OpenCreditsDialog(hWnd);
break;
case ID_OPTIONS_SHOW_LOG:
_AS->WriteLogMessage("Open Log");
sprintf(byTemp, "%s"AS_LOG_FILE, _AS->byProgramPath);
ShellExecute(0, "open", byTemp, 0, 0, SW_SHOW);
break;
}
break;
case WM_SIZE:
// We change the size of our window:
if(wParam == SIZE_MINIMIZED)
{
InvalidateRect(hWnd, NULL, TRUE);
_AS->SetActive(FALSE);
if(_ASConfig->bFullScreen && _ASConfig->bFullScreen)
{
_ASConfig->bFullScreen = FALSE;
ChangeDisplayMode();
SendMessage(*_AS->pWindow[GAME_WINDOW_ID].GethWnd(), WM_SYSCOMMAND, SC_MINIMIZE, 0);
_ASConfig->bFullScreen = TRUE;
_AS->bFullScreen = FALSE;
break;
}
}
else
{
if(!_AS->GetActive())
{
_AS->SetActive(TRUE);
if(!_AS->bFullScreen && _ASConfig->bFullScreen)
{
_AS->bFullScreen = _ASConfig->bFullScreen;
ChangeDisplayMode();
}
}
}
i = _AS->FindWindowID(hWnd);
if(i == -1)
break;
_ASConfig->iWindowWidth = LOWORD(lParam);
_ASConfig->iWindowHeight = HIWORD(lParam);
_AS->pWindow[i].Resize(LOWORD(lParam), HIWORD(lParam));
break;
case WM_ACTIVATE:
if(LOWORD(wParam) == WA_INACTIVE || ((BOOL) HIWORD(wParam)))
break;
i = _AS->FindWindowID(hWnd);
if(i == -1)
break;
_AS->pWindow[i].Resize(_ASConfig->iWindowWidth, _ASConfig->iWindowHeight);
break;
case WM_SYSKEYUP:
switch(wParam)
{
case VK_RETURN:
// Switch to fullscreen or to window mode:
_ASConfig->bFullScreen = !_ASConfig->bFullScreen;
ChangeDisplayMode();
break;
}
break;
case WM_CLOSE:
_AS->SetShutDown(TRUE);
return 0;
}
return DefWindowProc(hWnd, uMsg, wParam, lParam);
} // end WindowProc()