ILayout *FindElementNamed(ParsedMui& muiInfo, const char *name) { Control *c = FindControlNamed(muiInfo, name); if (c) return c; return FindLayoutNamed(muiInfo, name); }
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; }