Esempio n. 1
0
static void qutim_init_dwm()
{
	static bool inited = false;
	if (inited)
		return;
	inited = true;

	QLibrary dwm("dwmapi");
	qutim_DwmSetWindowAttribute = reinterpret_cast<DwmSetWindowAttribute_t>(dwm.resolve("DwmSetWindowAttribute"));
	qutim_DwmSetIconicThumbnail = reinterpret_cast<DwmSetIconicThumbnail_t>(dwm.resolve("DwmSetIconicThumbnail"));
	qutim_DwmSetIconicLivePreviewBitmap = reinterpret_cast<DwmSetIconicLivePreviewBitmap_t>(dwm.resolve("DwmSetIconicLivePreviewBitmap"));
	qutim_DwmInvalidateIconicBitmaps = reinterpret_cast<DwmInvalidateIconicBitmaps_t>(dwm.resolve("DwmInvalidateIconicBitmaps"));
}
void CRemoteFileDialog::OnSize(UINT nType, int cx, int cy)
{
	CRuntimeDlg::OnSize(nType, cx, cy);

	if (!GetDlgItem(IDC_CURRENTFOLDER))
	{
		return;   // not ready
	}

	// we use the cancel button as our placeholder
	CRect rCancel = OffsetCtrl(IDCANCEL);
	CDlgUnits dlu(*this);

	int nXOffset = cx - rCancel.right - dlu.ToPixelsX(7);
	int nYOffset = cy - rCancel.bottom - dlu.ToPixelsY(7);

	CDeferWndMove dwm(10);

	dwm.ResizeCtrl(this, IDC_CURRENTFOLDER, nXOffset, 0);
	dwm.ResizeCtrl(this, IDC_FILELIST, nXOffset, nYOffset);

	if (m_toolbar.GetSafeHwnd())
	{
		CRect rToolbar = OffsetCtrl(AFX_IDW_TOOLBAR);
		rToolbar.OffsetRect(nXOffset, 0);
		dwm.MoveWindow(&m_toolbar, rToolbar);
	}

	CRect rCtrl = OffsetCtrl(IDC_FILETYPES);
	rCtrl.right += nXOffset;
	rCtrl.OffsetRect(0, nYOffset);
	dwm.MoveWindow(GetDlgItem(IDC_FILETYPES), rCtrl);

	rCtrl = OffsetCtrl(IDC_FILENAME);
	rCtrl.right += nXOffset;
	rCtrl.OffsetRect(0, nYOffset);
	dwm.MoveWindow(GetDlgItem(IDC_FILENAME), rCtrl);

	dwm.OffsetCtrl(this, IDC_FILENAMELABEL, 0, nYOffset);
	dwm.OffsetCtrl(this, IDC_FILETYPESLABEL, 0, nYOffset);

	dwm.OffsetCtrl(this, IDOK, nXOffset, nYOffset);
	dwm.OffsetCtrl(this, IDCANCEL, nXOffset, nYOffset);

	CRect rGrip = OffsetCtrl(IDC_GRIPPER);
	rGrip.OffsetRect(cx - rGrip.right, cy - rGrip.bottom);
	dwm.MoveWindow(GetDlgItem(IDC_GRIPPER), rGrip);
}
Esempio n. 3
0
void CPreferencesDlg::Resize(int cx, int cy)
{
	if (cx == 0 || cy == 0)
	{
		CRect rClient;
		GetClientRect(rClient);

		cx = rClient.Width();
		cy = rClient.Height();
	}

	// calculate deltas
	int nDX = cx - m_sizeCurrent.cx;
	int nDY = cy - m_sizeCurrent.cy;

	if (nDX == 0 && nDY == 0)
		return;

	m_sizeCurrent.cx = cx;
	m_sizeCurrent.cy = cy;
	
	CDeferWndMove dwm(10);
	
	// offset buttons
	dwm.OffsetCtrl(this, IDC_HELP2, 0, nDY);
	dwm.OffsetCtrl(this, IDOK, nDX, nDY);
	dwm.OffsetCtrl(this, IDCANCEL, nDX, nDY);
	dwm.OffsetCtrl(this, IDC_APPLY, nDX, nDY);

	// resize tree
	dwm.ResizeCtrl(this, IDC_PAGES, 0, nDY);
	
	// PPHost and label and border
	dwm.ResizeCtrl(this, m_pphost.GetDlgCtrlID(), nDX, nDY);
	dwm.ResizeCtrl(this, IDC_PAGE_TITLE, nDX, 0);
	dwm.ResizeCtrl(this, IDC_HOSTFRAME, nDX, nDY);

	GetDlgItem(IDC_HOSTFRAME)->Invalidate(TRUE);
}
Esempio n. 4
0
int CTDLFilterBar::ReposControls(int nWidth, BOOL bCalcOnly)
{
	CDeferWndMove dwm(bCalcOnly ? 0 : NUMFILTERCTRLS + 1);

	if (nWidth <= 0)
	{
		CRect rClient;
		GetClientRect(rClient);

		nWidth = rClient.Width();
	}

	// Note: All calculations are performed in DLU until just before the move
	// is performed. This ensures that we minimize the risk of rounding errors.
	CDlgUnits dlu(*this);
	
	int nXPosDLU = 0, nYPosDLU = 0;
	int nWidthDLU = dlu.FromPixelsX(nWidth), nCtrlHeightDLU = CTRLHEIGHT;

	for (int nCtrl = 0; nCtrl < NUMFILTERCTRLS; nCtrl++)
	{
		CRect rCtrl, rCtrlDLU;
		const FILTERCTRL& fc = FILTERCTRLS[nCtrl];
		
		// display this control only if the corresponding column
		// is also showing
		BOOL bWantCtrl = WantShowFilter(fc.nType);
		
		if (bWantCtrl)
		{
			// if we're at the start of the line then just move ctrls
			// else we must check whether there's enough space to fit
			if (nXPosDLU > 0) // we're not the first
			{
				// do we fit?
				if ((nXPosDLU + CTRLLEN) > nWidthDLU) // no
				{
					// move to next line
					nXPosDLU = 0;
					nYPosDLU += CTRLYSPACING + (2 * nCtrlHeightDLU);
				}
			}
			
			// move label
			rCtrlDLU.left = nXPosDLU;
			rCtrlDLU.right = nXPosDLU + CTRLLEN;
			rCtrlDLU.top = nYPosDLU;
			rCtrlDLU.bottom = nYPosDLU + nCtrlHeightDLU;

			rCtrl = rCtrlDLU;
			dlu.ToPixels(rCtrl);
			
			if (fc.nIDLabel && !bCalcOnly)
				dwm.MoveWindow(GetDlgItem(fc.nIDLabel), rCtrl);
			
			// update YPos for the ctrl
			rCtrlDLU.OffsetRect(0, nCtrlHeightDLU);
			
			// move ctrl
			rCtrl = rCtrlDLU;
			dlu.ToPixels(rCtrl);
			
			if (!bCalcOnly)
				dwm.MoveWindow(GetDlgItem(fc.nIDCtrl), rCtrl);
			
			// update XPos for the control
			nXPosDLU = rCtrlDLU.right + CTRLXSPACING;
		}

		// show/hide and enable as appropriate
		if (!bCalcOnly)
		{
			BOOL bSelFilter = (m_filter.nShow == FS_SELECTED);
			BOOL bEnable = bWantCtrl;
			
			// special cases
			if (bEnable && fc.nIDCtrl != IDC_FILTERCOMBO)
			{
				if (bSelFilter && fc.nIDCtrl != IDC_OPTIONFILTERCOMBO)
					bEnable = FALSE;

				else if (m_bCustomFilter)
					bEnable = FALSE;
			}

			if (fc.nIDLabel)
			{
				GetDlgItem(fc.nIDLabel)->ShowWindow(bWantCtrl ? SW_SHOW : SW_HIDE);

				// note the first ctrl is always enabled even for custom filter
				GetDlgItem(fc.nIDLabel)->EnableWindow(bEnable);
			}
			
			GetDlgItem(fc.nIDCtrl)->ShowWindow(bWantCtrl ? SW_SHOW : SW_HIDE);
			GetDlgItem(fc.nIDCtrl)->EnableWindow(bEnable);
		}
	}

	// update bottom of filter bar
	nYPosDLU += (2 * nCtrlHeightDLU) + 2;

	return dlu.ToPixelsY(nYPosDLU);
}