示例#1
0
CRect CEditWithButton_Base::GetButtonRect(const CRect& rectWindow) const
{
	CRect rectButton(rectWindow);
	rectButton.top += m_TopBorder;
	rectButton.bottom -= m_BottomBorder;
	rectButton.right -= m_RightBorder;
	rectButton.left = rectButton.right - m_ButtonWidth;

	// take into account any scrollbars in the edit control
	if (rectButton.right > rectButton.left)
		rectButton.OffsetRect(m_RightBorder - m_LeftBorder, 0);

	return rectButton;
}
示例#2
0
BOOL CMySheet::OnInitDialog()
{
	BOOL bResult = CPropertySheet::OnInitDialog();
	
	//取得属性页的大小
	CRect rectWnd;
	GetWindowRect(rectWnd);
	
	//调整对话框的宽度
	SetWindowPos(NULL, 0, 0, rectWnd.Width() + 100, rectWnd.Height(), SWP_NOMOVE | SWP_NOZORDER | SWP_NOACTIVATE);
	CRect rectButton(rectWnd.Width() + 25, 25, rectWnd.Width()+75, 75);
	
	//用程序创建一个按钮
	m_button.Create("Button", BS_PUSHBUTTON, CRect(rectWnd.Width(), 25,	rectWnd.Width()+75, 50), this, 1);
	
	//显示这个按钮
	m_button.ShowWindow( SW_SHOW );
	
	CenterWindow();
	
	return bResult;
}
示例#3
0
///////////////////////////////////////////////////////////////////////////////
// Draw
void CXButton::Draw(CDC *pDC, CRect& rect)
{
	//XLISTCTRL_TRACE(_T("in CXButton::Draw:  <%s>\n"), m_strText);
	//TRACERECT(rect);

	if (m_hTheme == NULL)
	{
		// open theme for Button

		if (ThemeHelper.IsThemeLibAvailable())
		{
			//XLISTCTRL_TRACE(_T("opening theme data ~~~~~\n"));
			m_hTheme = ThemeHelper.OpenThemeData(m_pParent->m_hWnd, _T("Button"));
		}
	}

	CFont *pFont = m_pParent->GetFont();
	CFont *pOldFont = NULL;

	if (pFont)
		pOldFont = pDC->SelectObject(pFont);

	CRect rectButton(rect);

	m_rect.CopyRect(rectButton);

	//dc.SetBkMode(TRANSPARENT);
	pDC->SetBkMode(OPAQUE);

	DWORD part = BP_PUSHBUTTON;

	BOOL bIsThemed = IsThemed(m_hTheme);

	if (bIsThemed)
	{
		DWORD state = m_bPressed ? PBS_PRESSED : PBS_NORMAL;

		if (state == PBS_NORMAL)
		{
			if (!m_bEnabled)
				state = PBS_DISABLED;
			if (m_bMouseOver)
				state = PBS_HOT;
		}
		ThemeHelper.DrawThemeBackground(m_hTheme, pDC->m_hDC, part, state, &rectButton, NULL);
	}
	else
	{
		CBrush brBackground(GetSysColor(COLOR_BTNFACE));

		pDC->FillRect(&rectButton, &brBackground);

		// draw pressed button
		if (m_bPressed)
		{
			CBrush brBtnShadow(GetSysColor(COLOR_BTNSHADOW));
			pDC->FrameRect(&rectButton, &brBtnShadow);
		}
		else	// ...else draw non pressed button
		{
			UINT uState = DFCS_BUTTONPUSH |
				  (m_bMouseOver ? DFCS_HOT : 0) |
				  ((m_bPressed) ? DFCS_PUSHED : 0);

			pDC->DrawFrameControl(&rectButton, DFC_BUTTON, uState);
		}
	}

	BOOL bHasText = !m_strText.IsEmpty();

	UINT uTextAlignment = DT_CENTER | DT_SINGLELINE | DT_VCENTER | DT_WORDBREAK;

	// write the button title (if any)
	if (bHasText)
	{
		// draw the button's title -
		// if button is pressed then "press" title also
		if (m_bPressed && !bIsThemed)
			rectButton.OffsetRect(1, 1);

		if (bIsThemed)
		{
			ThemeHelper.DrawThemeText(m_hTheme, pDC->m_hDC, part, m_bEnabled ? PBS_NORMAL : PBS_DISABLED,
							m_strText, uTextAlignment, 0, &rectButton);
		}
		else
		{
			pDC->SetBkMode(TRANSPARENT);

			if (!m_bEnabled)
			{
				rectButton.OffsetRect(1, 1);
				pDC->SetTextColor(::GetSysColor(COLOR_3DHILIGHT));
				pDC->DrawText(m_strText, -1, &rectButton, uTextAlignment);
				rectButton.OffsetRect(-1, -1);
				pDC->SetTextColor(::GetSysColor(COLOR_3DSHADOW));
				pDC->DrawText(m_strText, -1, &rectButton, uTextAlignment);
			}
			else
			{
				pDC->SetTextColor(::GetSysColor(COLOR_BTNTEXT));
				pDC->SetBkColor(::GetSysColor(COLOR_BTNFACE));
				pDC->DrawText(m_strText, -1, &rectButton, uTextAlignment);
			}
		}
	}

	if (pOldFont)
		pDC->SelectObject(pOldFont);
}