/* * StatsMainRedraw: Called when the main window needs to be redrawn. */ void StatsMainRedraw(void) { list_type l; HDC hdc; AREA a, b; object_node *obj; // Fake object node for DrawObject hdc = GetDC(cinfo->hMain); obj = ObjectGetBlank(); a.x = stat_x; a.cx = STAT_ICON_HEIGHT; for (l = main_stats; l != NULL; l = l->next) { Statistic *s = (Statistic *) (l->data); a.y = s->y; a.cy = s->cy; obj->icon_res = s->name_res; OffscreenWindowBackground(NULL, a.x, a.y, a.cx, a.cy); DrawStretchedObjectDefault(hdc, obj, &a, NULL); GdiFlush(); b.x = stat_bar_x; b.cx = stat_width; b.y = a.y + STATS_MAIN_SPACING; b.cy = s->cy - 4 * STATS_MAIN_SPACING; InterfaceDrawBarBorder(NULL, hdc, &b); } ObjectDestroyAndFree(obj); ReleaseDC(cinfo->hMain, hdc); }
/* * AboutInitDialog: Handle WM_INITDIALOG messages. */ BOOL AboutInitDialog(HWND hDlg, HWND hwndFocus, LPARAM lParam) { int i,sideBuffer,xEdge,yEdge; POINT pt; HWND hwndScroll = GetDlgItem(hDlg, IDC_SCROLL); RECT r, rcScrollClient, rcScroll, rcDlg, rcDlgClient; char buffer[80]; char format[80]; /* Load credits from bgf file */ if (DibOpenFile(credits_filename, &credits_b)) credits_pdib = BitmapsGetPdibByIndex(credits_b, credits_page); else debug(("AboutInitDialog unable to load file %s\n", credits_filename)); GetWindowRect(hwndScroll, &r); OffsetRect(&r, -r.left, -r.top); GetWindowRect(hDlg, &rcDlg); GetWindowRect(hwndScroll, &rcScroll); GetClientRect(hwndScroll, &rcScrollClient); sideBuffer = rcScroll.left - rcDlg.left; xEdge = (rcScroll.right-rcScroll.left) - rcScrollClient.right; yEdge = (rcScroll.bottom-rcScroll.top) - rcScrollClient.bottom; scroll_width = DibWidth(credits_pdib); scroll_height = rcScrollClient.bottom; SetWindowPos(hwndScroll,NULL,0,0,xEdge + scroll_width,rcScroll.bottom - rcScroll.top,SWP_NOZORDER|SWP_NOMOVE); SetWindowPos(hDlg,NULL,0,0,xEdge + sideBuffer*2 + scroll_width,rcDlg.bottom - rcDlg.top,SWP_NOZORDER|SWP_NOMOVE); GetWindowRect(hDlg, &rcDlg); GetClientRect(hDlg, &rcDlgClient); // Center windows horizontally CenterDlgItem(hDlg, IDC_NUMBER); CenterDlgItem(hDlg, IDC_SPECIAL1); CenterDlgItem(hDlg, IDC_SPECIAL2); CenterDlgItem(hDlg, IDC_SCROLL); CenterDlgItem(hDlg, IDOK); hAboutDlg = hDlg; CenterWindow(hDlg, GetParent(hDlg)); GetDlgItemText(hDlg, IDC_NUMBER, format, 80); sprintf(buffer, format, MAJOR_REV*100+MINOR_REV); SetDlgItemText(hDlg, IDC_NUMBER, buffer); if (config.technical) { sprintf(buffer, "Client Software Version %d:%d", MAJOR_REV, MINOR_REV); SetDlgItemText(hDlg, IDC_SPECIAL1, buffer); sprintf(buffer, "Server Host Address %s:%d", (LPCTSTR)config.comm.hostname, config.comm.sockport); SetDlgItemText(hDlg, IDC_SPECIAL2, buffer); } GetWindowRect(GetDlgItem(hDlg,IDC_SPECIAL2),&r); pt.x = r.left + (r.right-r.left)/2 - DUDE_AREA_WIDTH/2; pt.y = r.bottom + 10; ScreenToClient(hDlg,&pt); scroll_y = 0; dude_x = pt.x; dude_y = pt.y; gbits_width = max(scroll_width, DUDE_AREA_WIDTH); gbits_height = max(scroll_height, DUDE_MAX_HEIGHT); gDC = CreateMemBitmap(gbits_width, gbits_height, &gOldBitmap, &gBits); if (gDC == 0) debug(("AboutInitDialog couldn't create DC!\n")); timer_id = SetTimer(hDlg, TIMER_ABOUT, ABOUT_INTERVAL, NULL); if (state == STATE_GAME) { // Set up animated characters for (i=0; i < NUM_DUDES; i++) { object_node *obj; obj = dudes[i].obj = ObjectGetBlank(); obj->icon_res = ABOUT_RSC; obj->animate->animation = ANIMATE_NONE; if (i == 0) { dudes[i].angle = 3 * NUMDEGREES / 4; dudes[i].x = DUDE_X1; } else { dudes[i].angle = NUMDEGREES / 4; dudes[i].x = DUDE_X2; } } } CenterWindow(hDlg, GetParent(hDlg)); return TRUE; }