STDMETHODIMP TffdshowPageBase::Activate(HWND hwndParent, LPCRECT rect, BOOL fModal) { CheckPointer(rect, E_POINTER); if (!wasobjectset) { return E_UNEXPECTED; } if (m_hwnd) { return E_UNEXPECTED; } HWND hwnd = createDialog(dialogId, hwndParent); if (hwnd == NULL) { return E_OUTOFMEMORY; } //setHWND(hwnd); translate(); Move(rect); Show(SW_SHOWNORMAL); //LOGFONT lf={-13L,-13L,0L,0L,FW_NORMAL,0,0,0,SYMBOL_CHARSET,OUT_STROKE_PRECIS,CLIP_STROKE_PRECIS,DRAFT_QUALITY,FF_ROMAN+VARIABLE_PITCH,"Webdings"}; LOGFONT lf = {18L, 0L, 0L, 0L, FW_NORMAL, 0, 0, 0, SYMBOL_CHARSET, OUT_DEFAULT_PRECIS, CLIP_DEFAULT_PRECIS, NONANTIALIASED_QUALITY, FF_DONTCARE + DEFAULT_PITCH, _l("Webdings")}; arrowsFont = CreateFontIndirect(&lf); dlg = findParentDlg(); if (IsWindow(dlg)) { if (resorePos && cfgGet(IDFF_dlgRestorePos)) { int x, y; x = cfgGet(IDFF_dlgPosX); y = cfgGet(IDFF_dlgPosY); WINDOWPLACEMENT wpl; wpl.length = sizeof(wpl); GetWindowPlacement(dlg, &wpl); OffsetRect(&wpl.rcNormalPosition, x - wpl.rcNormalPosition.left, y - wpl.rcNormalPosition.top); SetWindowPlacement(dlg, &wpl); } if (cfgGet(IDFF_alwaysOnTop)) { SetWindowPos(dlg, HWND_TOPMOST, 0, 0, 0, 0, SWP_NOMOVE | SWP_NOSIZE); } } htv = GetDlgItem(m_hwnd, IDC_TV_TREE); SetWindowLong(htv, GWL_STYLE, TVS_NOHSCROLL | GetWindowLong(htv, GWL_STYLE)); hil = ImageList_Create(16, 16, ILC_COLOR | ILC_MASK, 2, 2); ilClear = ImageList_Add(hil, bmp1[0] = LoadBitmap(hi, MAKEINTRESOURCE(IDB_CLEAR)), bmp2[0] = LoadBitmap(hi, MAKEINTRESOURCE(IDB_CHB_MASK))); ilChecked = ImageList_Add(hil, bmp1[1] = LoadBitmap(hi, MAKEINTRESOURCE(IDB_CHECKED)), bmp2[1] = LoadBitmap(hi, MAKEINTRESOURCE(IDB_CHB_MASK))); ilArrowUD = ImageList_Add(hil, bmp1[2] = LoadBitmap(hi, MAKEINTRESOURCE(IDB_ARROWS)), bmp2[2] = LoadBitmap(hi, MAKEINTRESOURCE(IDB_ARROWS_MASK_UD))); ilArrowU = ImageList_Add(hil, bmp1[3] = LoadBitmap(hi, MAKEINTRESOURCE(IDB_ARROWS)), bmp2[3] = LoadBitmap(hi, MAKEINTRESOURCE(IDB_ARROWS_MASK_U))); ilArrowD = ImageList_Add(hil, bmp1[4] = LoadBitmap(hi, MAKEINTRESOURCE(IDB_ARROWS)), bmp2[4] = LoadBitmap(hi, MAKEINTRESOURCE(IDB_ARROWS_MASK_D))); onActivate(); static const TanchorInfo ainfo[] = { IDC_PLACE_PAGE, TanchorInfo::LEFT | TanchorInfo::RIGHT | TanchorInfo::TOP | TanchorInfo::BOTTOM, 0, 0 }; anchors.add(ainfo, *this); TreeView_SetIndent(htv, 24); //TreeView_SetItemHeight(htv,26); showShowHide(); int lastPage = cfgGet(IDFF_lastPage); treeSelectItem(lastPage); enableHints(!!cfgGet(IDFF_showHints)); deci->setCfgDlgHwnd(dlg); deci->setOnChangeMsg(m_hwnd, WM_FFONCHANGE); deci->setOnFrameMsg(m_hwnd, WM_FFONFRAME); return NOERROR; }
void TffdshowPageDec::showShowHide(int previd, int prevVisId) { if (previd == 0 && page) { previd = page->uniqueID(); } if (prevVisId == 0) { prevVisId = hti2page(TreeView_GetFirstVisible(htv))->uniqueID(); } for (ThtiPages::reverse_iterator rp = filterPages.rbegin(); rp != filterPages.rend(); rp++) if ((*rp)->hti) { TreeView_DeleteItem(htv, (*rp)->hti); (*rp)->hti = NULL; for (TconfPages::iterator i = (*rp)->begin(); i != (*rp)->end(); i++) { (*i)->hti = NULL; } } TVINSERTSTRUCT tvis; tvis.hParent = htiPresets; tvis.hInsertAfter = htiBeforeShowHide; tvis.item.mask = TVIF_PARAM | TVIF_TEXT; HTREEITEM htiLast0 = NULL; for (ThtiPages::const_iterator p = filterPages.begin(); p != filterPages.end(); p++) if ((*p)->getPage()->getShow()) { tvis.item.lParam = (LPARAM) * p; tvis.item.pszText = LPTSTR((*p)->front()->dialogName()); tvis.item.iImage = tvis.item.iSelectedImage = 0; tvis.hParent = ((*p)->getPage()->filterPageID > 1) ? htiLast0 : htiPresets; HTREEITEM hti = TreeView_InsertItem(htv, &tvis); (*p)->hti = hti; for (TconfPages::iterator i = (*p)->begin(); i != (*p)->end(); i++) { (*i)->hti = hti; } if ((*p)->getPage()->filterPageID <= 1) { if (htiLast0) { TreeView_Expand(htv, htiLast0, TVE_EXPAND); } htiLast0 = hti; } } if (htiLast0) { TreeView_Expand(htv, htiLast0, TVE_EXPAND); } sortOrder(); if (previd) { treeSelectItem(previd, prevVisId); } }