int gui_fullscreen() { if (fullscreen) { fullscreen=0; video_leavefullscreen(); } else { fullscreen=1; video_enterfullscreen(); } return D_EXIT; }
int WINAPI WinMain (HINSTANCE hThisInstance, HINSTANCE hPrevInstance, LPSTR lpszArgument, int nFunsterStil) { HWND hwnd; /* This is the handle for our window */ MSG messages; /* Here messages to the application are saved */ WNDCLASSEX wincl; /* Data structure for the windowclass */ int c; int oldf = 0; char *p; for (c = 0; c < 128; c++) keylookup[c] = c; processcommandline(); hinstance = hThisInstance; /* The Window structure */ wincl.hInstance = hThisInstance; wincl.lpszClassName = szClassName; wincl.lpfnWndProc = WindowProcedure; /* This function is called by windows */ wincl.style = CS_DBLCLKS; /* Catch double-clicks */ wincl.cbSize = sizeof (WNDCLASSEX); /* Use default icon and mouse-pointer */ wincl.hIcon = LoadIcon(hThisInstance, "allegro_icon"); wincl.hIconSm = LoadIcon(hThisInstance, "allegro_icon"); wincl.hCursor = LoadCursor (NULL, IDC_ARROW); wincl.lpszMenuName = NULL; /* No menu */ wincl.cbClsExtra = 0; /* No extra bytes after the window class */ wincl.cbWndExtra = 0; /* structure or the window instance */ /* Use Windows's default color as the background of the window */ wincl.hbrBackground = (HBRUSH) COLOR_BACKGROUND; /* Register the window class, and if it fails quit the program */ if (!RegisterClassEx (&wincl)) return 0; /* The class is registered, let's create the program*/ hwnd = CreateWindowEx ( 0, /* Extended possibilites for variation */ szClassName, /* Classname */ VERSION_STR, /* Title Text */ WS_OVERLAPPEDWINDOW/*&~WS_SIZEBOX&~WS_THICKFRAME&~WS_MAXIMIZEBOX*/, /* default window */ CW_USEDEFAULT, /* Windows decides the position */ CW_USEDEFAULT, /* where the window ends up on the screen */ 640 + (GetSystemMetrics(SM_CXFIXEDFRAME) * 2), /* The programs width */ 480 + (GetSystemMetrics(SM_CYFIXEDFRAME) * 2) + GetSystemMetrics(SM_CYMENUSIZE) + GetSystemMetrics(SM_CYCAPTION) + 1, /* and height in pixels */ HWND_DESKTOP, /* The window is a child-window to desktop */ LoadMenu(hThisInstance, TEXT("MainMenu")), /* No menu */ hThisInstance, /* Program Instance handler */ NULL /* No Window Creation data */ ); ghwnd = hwnd; win_set_window(hwnd); allegro_init(); get_executable_name(exedir, 511); p = get_filename(exedir); p[0] = 0; config_load(); InitializeCriticalSection(&cs); /* Make the window visible on the screen */ ShowWindow (hwnd, nFunsterStil); initmenu(); mainthread = (HANDLE)_beginthread(_mainthread, 0, NULL); updatewindowtitle(); /* Run the message loop. It will run until GetMessage() returns 0 */ while (!quited) { // runbbc(); if (PeekMessage(&messages, NULL, 0, 0, PM_REMOVE)) { if (messages.message == WM_QUIT) { quited=1; } TranslateMessage(&messages); DispatchMessage(&messages); } else Sleep(10); if ((key[KEY_LCONTROL] || key[KEY_RCONTROL]) && key[KEY_END] && mousecapture) { ClipCursor(&oldclip); mousecapture = 0; updatewindowtitle(); } if (key[KEY_ALT] && key[KEY_ENTER] && fullscreen && !oldf) { EnterCriticalSection(&cs); fullscreen = 0; video_leavefullscreen(); LeaveCriticalSection(&cs); } else if (key[KEY_ALT] && key[KEY_ENTER] && !fullscreen && !oldf) { EnterCriticalSection(&cs); fullscreen = 1; video_enterfullscreen(); LeaveCriticalSection(&cs); } oldf = key[KEY_ALT] && key[KEY_ENTER]; } EnterCriticalSection(&cs); TerminateThread(mainthread, 0); main_close(); DeleteCriticalSection(&cs); return messages.wParam; }