The CDXMenu class is intended to deliver a fast and easy way to creating menu using CDX classes and a CDXBitmapFont class for computer games. You can select the font, size, color, alpha mode, and so forth for each menu.
Public Methods
- CDXMenu
- ~CDXMenu
- Create
- AddItem
- Draw
- SetTitle
- SetColor
- SetBackGround
- SetAlpha
- SetBorder
- SetSound
- SetItem
- SetButtonSpeed
- Reset
- Enter
Example Program
#include <windows.h> #include <windowsx.h> #include <stdio.h> #define CDXINCLUDEALL // include all headers #include <CDX.h> #include <CDXBitmapFont.h> #include <CDXMenu.h> CDXScreen * Screen = 0; // The screen object; every // program must have one. // Remember to set all CDX objects // to 0 when you declare them! int Toggle = 0; // flag for the screen color CDXBitmapFont * Font1; // Define the Font object CDXMenu * MainMenu; // Define the Main Menu object #define TIMER_ID 1 // variables used for the timer #define TIMER_RATE 500 #define NAME "CDXExample" #define TITLE "CDX Example" long PASCAL WinProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam) { switch(message) { case WM_TIMER: if( Toggle ) // fill the screen depending on // toggle flag { Screen->Fill(0); Toggle = 0; } else { Screen->Fill(255); Toggle = 1; } // Draw the main menu if(!MainMenu->Enter()) int Option = MainMenu->Draw(10,10); else // if clicked { switch(Option){.....} } Screen->Flip(); // flip back and front buffers break; case WM_KEYDOWN: switch(wParam) { case VK_ESCAPE: // if ESC key was hit, quit program PostMessage(hWnd, WM_CLOSE, 0, 0); break; } break; case WM_DESTROY: SAFEDELETE( Screen ); // delete the screen object PostQuitMessage(0); // terminate the program break; } return DefWindowProc(hWnd, message, wParam, lParam); } BOOL InitApp(HINSTANCE hInst, int nCmdShow) { HWND hWnd; WNDCLASS WndClass; WndClass.style = CS_HREDRAW | CS_VREDRAW; WndClass.lpfnWndProc = WinProc; WndClass.cbClsExtra = 0; WndClass.cbWndExtra = 0; WndClass.hInstance = hInst; WndClass.hIcon = LoadIcon(0, IDI_APPLICATION); WndClass.hCursor = LoadCursor(0, IDC_ARROW); WndClass.hbrBackground = (HBRUSH)GetStockObject(BLACK_BRUSH); WndClass.lpszMenuName = NAME; WndClass.lpszClassName = NAME; RegisterClass(&WndClass); // create a window that covers the whole screen // this is needed for fullscreen CDX apps hWnd = CreateWindowEx( WS_EX_TOPMOST, NAME, TITLE, WS_POPUP, 0,0, GetSystemMetrics(SM_CXSCREEN), GetSystemMetrics(SM_CYSCREEN), NULL, NULL, hInst, NULL); // when hWnd = -1 there was an error creating the main // window. CDXError needs a CDXScreen object; if there is // none at this early program stage, pass it NULL if(!hWnd) CDXError( NULL , "Could not create the main window" ); // show the main window ShowWindow(hWnd, nCmdShow); UpdateWindow(hWnd); // Create the CDXSreen object Screen = new CDXScreen(); if(FAILED(Screen->CreateFullScreen(hWnd, 640, 480, 8))) CDXError( NULL , "Could not set video mode 640x480x8" ); // Create the CDXBitmapFont object Font1 = new CDXBitmapFont(); Font1->Create(Screen,"Arial",15,RGB(255,255,0)); // Create the CDXMenu object MainMenu = new CDXMenu(); MainMenu->Create(Screen,Font1,RGB(250,100,0),RGB(250,100,0), "MAIN MENU",150); MainMenu->AddItem("START GAME"); MainMenu->AddItem("OPTIONS"); MainMenu->AddItem("HELP"); MainMenu->AddItem("CREDITS"); MainMenu->AddItem("QUIT GAME"); // Create our timer for flipping the screen display SetTimer(hWnd, TIMER_ID, TIMER_RATE, NULL); return TRUE; } int PASCAL WinMain( HINSTANCE hInst, HINSTANCE hPrevInst, LPSTR lpCmdLine, int nCmdShow) { MSG msg; if(!InitApp(hInst, nCmdShow)) CDXError( NULL , "Could not initialize CDX application"); while(1) { if(PeekMessage(&msg, NULL, 0, 0, PM_NOREMOVE)) { if(!GetMessage(&msg, NULL, 0, 0 )) return msg.wParam; TranslateMessage(&msg); DispatchMessage(&msg); } else WaitMessage(); } }
Downloads
Download Library (Binary + source + documentation)
For more info, visit: CDXMenu Home page
Requirements
CDX Library: www.cdxlib.com
CDXBitmapFont: http://www.horningabout.com/cdx/cdxbitmapfont.html