SelectMenu::SelectMenu(MenuManager * m):Menu(m, fs_game_menus::kMenuIdSelect, fs_game_menus::kMenuIdBrief, "mselect.dat", "mselout.dat"), cur_agent_(0), tick_count_(0), rnd_(0), sel_all_(false) { tab_ = TAB_EQUIPS; pSelectedWeap_ = NULL; selectedWInstId_ = 0; pSelectedMod_ = NULL; weapon_dragged_ = NULL; addStatic(85, 35, 545, "#SELECT_TITLE", FontManager::SIZE_4, false); txtTimeId_ = addStatic(500, 9, "", FontManager::SIZE_2, true); // Time moneyTxtId_ = addStatic(500, 87, 128, "0", FontManager::SIZE_2, true); // Money addOption(16, 234, 129, 25, "#SELECT_RES_BUT", FontManager::SIZE_2, fs_game_menus::kMenuIdResearch); teamButId_ = addToggleAction(16, 262, 129, 25, "#SELECT_TEAM_BUT", FontManager::SIZE_2, false); modsButId_ = addToggleAction(16, 290, 129, 25, "#MENU_MODS_BUT", FontManager::SIZE_2, false); equipButId_ = addToggleAction(16, 318, 129, 25, "#MENU_EQUIP_BUT", FontManager::SIZE_2, true); acceptButId_ = addOption(16, 346, 129, 25, "#MENU_ACC_BUT", FontManager::SIZE_2, fs_game_menus::kMenuIdLoading); addOption(500, 347, 128, 25, "#MENU_MAIN_BUT", FontManager::SIZE_2, fs_game_menus::kMenuIdMain); // Team list pTeamLBox_ = addTeamListBox(502, 106, 124, 236, false); pTeamLBox_->setModel(g_gameCtrl.agents().getAgents()); // Available weapons list pWeaponsLBox_ = addListBox(504, 110, 122, 230, tab_ == TAB_EQUIPS); pWeaponsLBox_->setModel(g_gameCtrl.weapons().getAvailableWeapons()); // Available mods list pModsLBox_ = addListBox(504, 110, 122, 230, tab_ == TAB_MODS); pModsLBox_->setModel(g_gameCtrl.mods().getAvalaibleMods()); cancelButId_ = addOption(500, 270, 127, 22, "#MENU_CANCEL_BUT", FontManager::SIZE_2, MENU_NO_MENU, false); reloadButId_ = addOption(500, 295, 127, 22, "#SELECT_RELOAD_BUT", FontManager::SIZE_2, MENU_NO_MENU, false); purchaseButId_ = addOption(500, 320, 127, 22, "#SELECT_BUY_BUT", FontManager::SIZE_2, MENU_NO_MENU, false); sellButId_ = addOption(500, 320, 127, 22, "#SELECT_SELL_BUT", FontManager::SIZE_2, MENU_NO_MENU, false); // Agent name selected txtAgentId_ = addStatic(158, 86, "", FontManager::SIZE_2, true); }
LRESULT CALLBACK WinProc(HWND hWnd, UINT msg, WPARAM wParam, LPARAM lParam) { switch (msg) { case WM_PAINT: { if(hotkeyPressed) { RECT rect; GetClientRect(hWnd, &rect); InvalidateRect(hWnd, &rect, true); hbrush = CreateSolidBrush(RGB(rand() % 250, rand() % 250 , rand() % 250)); } PAINTSTRUCT ps; HDC hdc = BeginPaint(hWnd, &ps); FillRect(hdc,&ps.rcPaint, hbrush); EndPaint(hWnd, &ps); } break; case WM_CREATE: { srand(time(NULL)); button = new Button("Click me !", 40, 10, 100, 40, hWnd, IDC_BUTTON_1); button2 = new Button("Select Item", 540, 10, 100, 20, hWnd, IDC_BUTTON_2); GetSystemMenu(hWnd, true); hMenu = CreateMenu(); ADDPOPUPMENU(hMenu, "&Menu Commands"); ADDMENUITEM(hMenu, MENU_ITEM_1, "&Say Something"); ADDMENUITEM(hMenu, MENU_ITEM_2, "&Change Button position"); ADDMENUITEM(hMenu, MENU_ITEM_3, "&Exit"); SetMenu(hWnd, hMenu); RegisterHotKey(hWnd, CONTROL_SPACE, MOD_CONTROL, VK_SPACE); RegisterHotKey(hWnd, ALT_LEFT, MOD_ALT, VK_LEFT); addListBox(hWnd); HICON hIcon = (HICON) LoadImage(NULL, "themes.ico", IMAGE_ICON, 0, 0, LR_DEFAULTSIZE | LR_LOADFROMFILE); if (hIcon) { //Change both icons to the same icon handle. SendMessage(hWnd, WM_SETICON, ICON_SMALL, (LPARAM)hIcon); SendMessage(hWnd, WM_SETICON, ICON_BIG, (LPARAM)hIcon); //This will ensure that the application icon gets changed too. SendMessage(GetWindow(hWnd, GW_OWNER), WM_SETICON, ICON_SMALL, (LPARAM)hIcon); SendMessage(GetWindow(hWnd, GW_OWNER), WM_SETICON, ICON_BIG, (LPARAM)hIcon); } break; } case WM_GETMINMAXINFO: { MINMAXINFO *mmi = (MINMAXINFO *) lParam; mmi->ptMinTrackSize.x = 500; mmi->ptMaxTrackSize.x = 900; mmi->ptMinTrackSize.y = 500; mmi->ptMaxTrackSize.y = 900; return 0; } case WM_VSCROLL: { hotkeyPressed = true; SendMessage(hWnd, WM_PAINT, wParam, lParam); hotkeyPressed = false; CurPos = GetScrollPos(hWnd, SB_CTL); switch (LOWORD(wParam)) { case SB_TOP: CurPos = 0; break; case SB_LINEUP: if (CurPos > 0) CurPos--; break; case SB_THUMBPOSITION: CurPos = HIWORD(wParam); break; case SB_THUMBTRACK: CurPos = HIWORD(wParam); break; case SB_LINEDOWN: if (CurPos < 240) CurPos++; break; case SB_BOTTOM: CurPos = 240; break; case SB_ENDSCROLL: break; } SetScrollPos(hWnd, SB_CTL, CurPos, TRUE); } case WM_HOTKEY : { switch(wParam) { case CONTROL_SPACE: { button2->setPos(rand() % 400, rand() % 400); break; } case ALT_LEFT: { hotkeyPressed = true; SendMessage(hWnd, WM_PAINT, wParam, lParam); hotkeyPressed = false; break; } } } case WM_MOUSEMOVE: { } case WM_COMMAND: { switch (LOWORD(wParam)) { case IDC_BUTTON_1 : { MessageBox(hWnd, "You just clicked the Button !", "Information", NULL); break; } case MENU_ITEM_1 : { MessageBox(hWnd, "Something !", "Menu command", NULL); break; } case MENU_ITEM_2 : { button->setPos( rand() % 400 + 10 , rand() % 400 + 10); break; } case MENU_ITEM_3 : { PostQuitMessage(0); return 0; } case IDC_BUTTON_2: { int count = SendMessage(hListBox, LB_GETCURSEL, 0, 0); cout << count << endl; switch(count){ case 0: MessageBox(hWnd, "One", "Listbox", NULL); break; case 1: MessageBox(hWnd, "TWO", "Listbox", NULL); break; case 2: MessageBox(hWnd, "THREE", "Listbox", NULL); break; case 3: MessageBox(hWnd, "FOUR", "Listbox", NULL); break; } return 0; } } break; } case WM_DESTROY: { PostQuitMessage(0); return 0; } case WM_SIZE: { } break; } return DefWindowProc(hWnd, msg, wParam, lParam); }