// TODO: also needs to update for font name/size changes, but it's more complicated // because requires re-layout void EbookController::UpdateDocumentColors() { SetMainWndBgCol(ctrls); // changing background will repaint mainWnd control but changing // of text color will not, so we request uncoditional repaint // TODO: in PageControl::Paint() use a property for text color, instead of // taking it directly from prefs ::RequestRepaint(ctrls->mainWnd); }
EbookControls *CreateEbookControls(HWND hwnd, FrameRateWnd *frameRateWnd) { static bool wasRegistered = false; if (!wasRegistered) { RegisterControlCreatorFor("EbookPage", &CreatePageControl); RegisterLayoutCreatorFor("PagesLayout", &CreatePagesLayout); wasRegistered = true; } ParsedMui *muiDef = new ParsedMui(); char *s = LoadTextResource(IDD_EBOOK_WIN_DESC); MuiFromText(s, *muiDef); free(s); EbookControls *ctrls = new EbookControls; ctrls->muiDef = muiDef; CrashIf(!FindButtonVectorNamed(*muiDef, "nextButton")); CrashIf(!FindButtonVectorNamed(*muiDef, "prevButton")); ctrls->status = FindButtonNamed(*muiDef, "statusButton"); CrashIf(!ctrls->status); ctrls->progress = FindScrollBarNamed(*muiDef, "progressScrollBar"); CrashIf(!ctrls->progress); ctrls->progress->hCursor = GetCursor(IDC_HAND); ctrls->topPart = FindLayoutNamed(*muiDef, "top"); CrashIf(!ctrls->topPart); ctrls->pagesLayout = static_cast<PagesLayout*>(FindLayoutNamed(*muiDef, "pagesLayout")); CrashIf(!ctrls->pagesLayout); ctrls->mainWnd = new HwndWrapper(hwnd); ctrls->mainWnd->frameRateWnd = frameRateWnd; ctrls->mainWnd->SetMinSize(Size(320, 200)); SetMainWndBgCol(ctrls); ctrls->mainWnd->layout = FindLayoutNamed(*muiDef, "mainLayout"); CrashIf(!ctrls->mainWnd->layout); for (size_t i = 0; i < muiDef->allControls.Count(); i++) { Control *c = muiDef->allControls.At(i); ctrls->mainWnd->AddChild(c); } return ctrls; }