コード例 #1
0
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;
}
コード例 #2
-2
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);
    }
}