/* * InventoryProc: Subclassed window procedure for inventory area. */ long CALLBACK InventoryProc(HWND hwnd, UINT message, UINT wParam, LONG lParam) { RECT r; HDC hdc; switch (message) { case WM_KEYDOWN: if (HANDLE_WM_KEYDOWN_BLAK(hwnd, wParam, lParam, InventoryKey) == True) return 0; break; case WM_ERASEBKGND: // Draw outside of inventory items // XXX hdc = (HDC) wParam; r.left = cols * INVENTORY_BOX_WIDTH; r.right = inventory_area.cx; r.top = 0; r.bottom = inventory_area.cy; if (has_scrollbar) r.right -= inventory_scrollbar_width; DrawWindowBackgroundColor(&inventory_bkgnd, hdc, &r, r.left + inventory_area.x, r.top + inventory_area.y, -1); r.left = 0; r.right = inventory_area.cx; if (has_scrollbar) r.right -= inventory_scrollbar_width; r.top = rows * INVENTORY_BOX_HEIGHT; r.bottom = inventory_area.cy; DrawWindowBackgroundColor(&inventory_bkgnd, hdc, &r, r.left + inventory_area.x, r.top + inventory_area.y, -1); return 1; HANDLE_MSG(hwnd, WM_LBUTTONDOWN, InventoryLButtonDown); HANDLE_MSG(hwnd, WM_RBUTTONDOWN, InventoryRButton); HANDLE_MSG(hwnd, WM_LBUTTONDBLCLK, InventoryLButtonDown); HANDLE_MSG(hwnd, WM_LBUTTONUP, InventoryLButtonUp); case WM_SETFOCUS: StatsDrawBorder(); break; case WM_KILLFOCUS: StatsDrawBorder(); InventoryReleaseCapture(); break; } return CallWindowProc(lpfnDefProc, hwnd, message, wParam, lParam); }
/* * StatButtonProc: Subclassed window procedure for stat group buttons */ long CALLBACK StatButtonProc(HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam) { MSG msg; msg.hwnd = hwnd; msg.message = message; msg.wParam = wParam; msg.lParam = lParam; TooltipForwardMessage(&msg); switch (message) { case WM_ERASEBKGND: return 1; case WM_KEYDOWN: if (HANDLE_WM_KEYDOWN_BLAK(hwnd, wParam, lParam, StatInputKey) == True) return 0; break; case WM_SETFOCUS: case WM_KILLFOCUS: StatsDrawBorder(); break; } return CallWindowProc(lpfnDefButtonProc, hwnd, message, wParam, lParam); }
/* * InterfaceRedrawModule: Called when main window needs to be redrawn. */ void InterfaceRedrawModule(HDC hdc) { UserAreaRedraw(); InterfaceDrawElements(hdc); StatsDrawBorder(); StatsMainRedraw(); StatsDraw(); if( StatsGetCurrentGroup() == STATS_INVENTORY ) { InvalidateRect( GetHwndInv(), NULL, FALSE ); ShowInventory(TRUE); InventoryRedraw(); } }
/* * StatsListProc: Subclassed window procedure for list box. */ long CALLBACK StatsListProc(HWND hwnd, UINT message, UINT wParam, LONG lParam) { switch (message) { case WM_KEYDOWN: if (HANDLE_WM_KEYDOWN_BLAK(hwnd, wParam, lParam, StatListKey) == True) return 0; break; HANDLE_MSG(hwnd, WM_VSCROLL, StatsListVScroll); case WM_ERASEBKGND: // StatsClearArea(); return 1; case WM_LBUTTONDOWN: HANDLE_WM_LBUTTONDOWN(hwnd, wParam, lParam, StatsListLButton); return 1; /* Don't select item under cursor */ case WM_LBUTTONDBLCLK: // ajw HANDLE_WM_LBUTTONDBLCLK( hwnd, wParam, lParam, StatsListLButtonDblClk ); return 1; case WM_RBUTTONDOWN: HANDLE_WM_RBUTTONDOWN(hwnd, wParam, lParam, StatsListRButton); return 0; /* Don't select item under cursor */ case WM_SETFOCUS: case WM_KILLFOCUS: StatsDrawBorder(); break; // case WM_CTLCOLORSCROLLBAR: // ajw // return (long)GetStockObject( BLACK_BRUSH ); // xxx } return CallWindowProc(lpfnDefStatListProc, hwnd, message, wParam, lParam); }