本文整理汇总了C++中CDuiRect类的典型用法代码示例。如果您正苦于以下问题:C++ CDuiRect类的具体用法?C++ CDuiRect怎么用?C++ CDuiRect使用的例子?那么, 这里精选的类代码示例或许可以为您提供帮助。
在下文中一共展示了CDuiRect类的15个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: PixelToHiMetric
void CActiveXUI::SetPos(RECT rc, bool bNeedInvalidate)
{
CControlUI::SetPos(rc, bNeedInvalidate);
if( !m_bCreated ) DoCreateControl();
if( m_pUnk == NULL ) return;
if( m_pControl == NULL ) return;
SIZEL hmSize = { 0 };
SIZEL pxSize = { 0 };
pxSize.cx = m_rcItem.right - m_rcItem.left;
pxSize.cy = m_rcItem.bottom - m_rcItem.top;
PixelToHiMetric(&pxSize, &hmSize);
if( m_pUnk != NULL ) {
m_pUnk->SetExtent(DVASPECT_CONTENT, &hmSize);
}
if( m_pControl->m_pInPlaceObject != NULL ) {
CDuiRect rcItem = m_rcItem;
if( !m_pControl->m_bWindowless ) rcItem.ResetOffset();
m_pControl->m_pInPlaceObject->SetObjectRects(&rcItem, &rcItem);
}
if( !m_pControl->m_bWindowless ) {
ASSERT(m_pControl->m_pWindow);
::MoveWindow(*m_pControl->m_pWindow, m_rcItem.left, m_rcItem.top, m_rcItem.right - m_rcItem.left, m_rcItem.bottom - m_rcItem.top, TRUE);
}
}
示例2: GetText
void CGroupBoxUI::PaintText(HDC hDC)
{
CDuiString sText = GetText();
if( sText.IsEmpty() ) {
return;
}
if( m_dwTextColor == 0 ) m_dwTextColor = m_pManager->GetDefaultFontColor();
if( m_dwDisabledTextColor == 0 ) m_dwDisabledTextColor = m_pManager->GetDefaultDisabledColor();
if( sText.IsEmpty() ) return;
CDuiRect rcText = m_rcItem;
rcText.Deflate(5,5);
SIZE szAvailable = { rcText.right - rcText.left, rcText.bottom - rcText.top };
SIZE sz = CalcrectSize(szAvailable);
//¼ÆËãÎÄ×ÖÇøÓò
rcText.left = rcText.left + 15;
rcText.top = rcText.top - 5;
rcText.right = rcText.left + sz.cx;
rcText.bottom = rcText.top + sz.cy;
if( IsEnabled() )
{
CRenderEngine::DrawText(hDC, m_pManager, rcText, sText, m_dwTextColor, m_iFont, m_uTextStyle,
GetAdjustColor(m_dwBackColor), FALSE);
}
else
{
CRenderEngine::DrawText(hDC, m_pManager, rcText, sText, m_dwDisabledTextColor, m_iFont, m_uTextStyle,
GetAdjustColor(m_dwBackColor), FALSE);
}
}
示例3: DUITRACE
STDMETHODIMP CActiveXCtrl::OnInPlaceActivateEx(BOOL* pfNoRedraw, DWORD dwFlags)
{
DUITRACE(_T("AX: CActiveXCtrl::OnInPlaceActivateEx"));
ASSERT(m_pInPlaceObject==NULL);
if( m_pOwner == NULL ) return E_UNEXPECTED;
if( m_pOwner->m_pUnk == NULL ) return E_UNEXPECTED;
::OleLockRunning(m_pOwner->m_pUnk, TRUE, FALSE);
HWND hWndFrame = m_pOwner->GetManager()->GetPaintWindow();
HRESULT Hr = E_FAIL;
if( (dwFlags & ACTIVATE_WINDOWLESS) != 0 ) {
m_bWindowless = true;
Hr = m_pOwner->m_pUnk->QueryInterface(IID_IOleInPlaceObjectWindowless, (LPVOID*) &m_pInPlaceObject);
m_pOwner->m_hwndHost = hWndFrame;
m_pOwner->GetManager()->AddMessageFilter(m_pOwner);
}
if( FAILED(Hr) ) {
m_bWindowless = false;
Hr = CreateActiveXWnd();
if( FAILED(Hr) ) return Hr;
Hr = m_pOwner->m_pUnk->QueryInterface(IID_IOleInPlaceObject, (LPVOID*) &m_pInPlaceObject);
}
if( m_pInPlaceObject != NULL ) {
CDuiRect rcItem = m_pOwner->m_rcItem;
if( !m_bWindowless ) rcItem.ResetOffset();
m_pInPlaceObject->SetObjectRects(&rcItem, &rcItem);
}
m_bInPlaceActive = SUCCEEDED(Hr);
return Hr;
}
示例4: sizeof
LRESULT WindowImplBase::OnNcCalcSize(UINT uMsg, WPARAM wParam, LPARAM lParam, BOOL& bHandled)
{
LPRECT pRect=NULL;
if ( wParam == TRUE)
{
LPNCCALCSIZE_PARAMS pParam = (LPNCCALCSIZE_PARAMS)lParam;
pRect=&pParam->rgrc[0];
}
else
{
pRect=(LPRECT)lParam;
}
if ( ::IsZoomed(m_hWnd))
{ // 最大化时,计算当前显示器最适合宽高度
MONITORINFO oMonitor = {};
oMonitor.cbSize = sizeof(oMonitor);
::GetMonitorInfo(::MonitorFromWindow(*this, MONITOR_DEFAULTTONEAREST), &oMonitor);
CDuiRect rcWork = oMonitor.rcWork;
CDuiRect rcMonitor = oMonitor.rcMonitor;
rcWork.Offset(-oMonitor.rcMonitor.left, -oMonitor.rcMonitor.top);
pRect->right = pRect->left + rcWork.GetWidth();
pRect->bottom = pRect->top + rcWork.GetHeight();
return WVR_REDRAW;
}
return 0;
}
示例5: CalPos
RECT CEditWnd::CalPos()
{
CDuiRect rcPos = m_pOwner->GetPos();
RECT rcInset = m_pOwner->GetTextPadding();
rcPos.left += rcInset.left;
rcPos.top += rcInset.top;
rcPos.right -= rcInset.right;
rcPos.bottom -= rcInset.bottom;
LONG lEditHeight = m_pOwner->GetManager()->GetFontInfo(m_pOwner->GetFont())->tm.tmHeight;
if( lEditHeight < rcPos.GetHeight() ) {
rcPos.top += (rcPos.GetHeight() - lEditHeight) / 2;
rcPos.bottom = rcPos.top + lEditHeight;
}
CControlUI* pParent = m_pOwner;
RECT rcParent;
while( pParent = pParent->GetParent() ) {
if( !pParent->IsVisible() ) {
rcPos.left = rcPos.top = rcPos.right = rcPos.bottom = 0;
break;
}
rcParent = pParent->GetClientPos();
if( !::IntersectRect(&rcPos, &rcPos, &rcParent) ) {
rcPos.left = rcPos.top = rcPos.right = rcPos.bottom = 0;
break;
}
}
return rcPos;
}
示例6: sizeof
LRESULT WindowImplBase::OnGetMinMaxInfo(UINT uMsg, WPARAM wParam, LPARAM lParam, BOOL& bHandled)
{
LPMINMAXINFO lpMMI = (LPMINMAXINFO) lParam;
MONITORINFO oMonitor = {};
oMonitor.cbSize = sizeof(oMonitor);
::GetMonitorInfo(::MonitorFromWindow(*this, MONITOR_DEFAULTTONEAREST), &oMonitor);
CDuiRect rcWork = oMonitor.rcWork;
CDuiRect rcMonitor = oMonitor.rcMonitor;
rcWork.Offset(-oMonitor.rcMonitor.left, -oMonitor.rcMonitor.top);
// 计算最大化时,正确的原点坐标
lpMMI->ptMaxPosition.x = rcWork.left;
lpMMI->ptMaxPosition.y = rcWork.top;
lpMMI->ptMaxTrackSize.x = lpMMI->ptMaxSize.x = rcWork.GetWidth();
lpMMI->ptMaxTrackSize.y = lpMMI->ptMaxSize.y = rcWork.GetHeight();
if (m_PaintManager.GetMaxInfo().cx != 0) {
lpMMI->ptMaxTrackSize.x = lpMMI->ptMaxSize.x = m_PaintManager.GetMaxInfo().cx;
}
if (m_PaintManager.GetMaxInfo().cy != 0) {
lpMMI->ptMaxTrackSize.y = lpMMI->ptMaxSize.y = m_PaintManager.GetMaxInfo().cy;
}
lpMMI->ptMinTrackSize.x =m_PaintManager.GetMinInfo().cx;
lpMMI->ptMinTrackSize.y =m_PaintManager.GetMinInfo().cy;
bHandled = TRUE;
return 0;
}
示例7: if
void CComboBoxUI::PaintStatusImage(HDC hDC)
{
if (m_sArrowImage.IsEmpty())
CComboUI::PaintStatusImage(hDC);
else
{
// get index
if( IsFocused() ) m_uButtonState |= UISTATE_FOCUSED;
else m_uButtonState &= ~ UISTATE_FOCUSED;
if( !IsEnabled() ) m_uButtonState |= UISTATE_DISABLED;
else m_uButtonState &= ~ UISTATE_DISABLED;
int nIndex = 0;
if ((m_uButtonState & UISTATE_DISABLED) != 0)
nIndex = 4;
else if ((m_uButtonState & UISTATE_PUSHED) != 0)
nIndex = 2;
else if ((m_uButtonState & UISTATE_HOT) != 0)
nIndex = 1;
else if ((m_uButtonState & UISTATE_FOCUSED) != 0)
nIndex = 3;
// make modify string
CDuiString sModify = m_sArrowImage;
int nPos1 = sModify.Find(_T("source"));
int nPos2 = sModify.Find(_T("'"), nPos1 + 7);
if (nPos2 == -1) return; //first
int nPos3 = sModify.Find(_T("'"), nPos2 + 1);
if (nPos3 == -1) return; //second
CDuiRect rcBmpPart;
LPTSTR lpszValue = NULL;
rcBmpPart.left = _tcstol(sModify.GetData() + nPos2 + 1, &lpszValue, 10); ASSERT(lpszValue);
rcBmpPart.top = _tcstol(lpszValue + 1, &lpszValue, 10); ASSERT(lpszValue);
rcBmpPart.right = _tcstol(lpszValue + 1, &lpszValue, 10); ASSERT(lpszValue);
rcBmpPart.bottom = _tcstol(lpszValue + 1, &lpszValue, 10); ASSERT(lpszValue);
m_nArrowWidth = rcBmpPart.GetWidth() / 5;
rcBmpPart.left += nIndex * m_nArrowWidth;
rcBmpPart.right = rcBmpPart.left + m_nArrowWidth;
CDuiRect rcDest(0, 0, m_rcItem.right - m_rcItem.left, m_rcItem.bottom - m_rcItem.top);
rcDest.Deflate(GetBorderSize(), GetBorderSize());
rcDest.left = rcDest.right - m_nArrowWidth;
CDuiString sSource = sModify.Mid(nPos1, nPos3 + 1 - nPos1);
CDuiString sReplace;
sReplace.SmallFormat(_T("source='%d,%d,%d,%d' dest='%d,%d,%d,%d'"),
rcBmpPart.left, rcBmpPart.top, rcBmpPart.right, rcBmpPart.bottom,
rcDest.left, rcDest.top, rcDest.right, rcDest.bottom);
sModify.Replace(sSource, sReplace);
// draw image
if (!DrawImage(hDC, m_sArrowImage, sModify))
m_sNormalImage.Empty();
}
}
示例8: OnSize
LRESULT CWkeWebkitWnd::OnSize(UINT uMsg, WPARAM wParam, LPARAM lParam, BOOL& bHandled)
{
CDuiRect rcWnd;
::GetWindowRect(*this, &rcWnd);
m_pWebView->resize(rcWnd.GetWidth(), rcWnd.GetHeight());
m_pWebView->tick();
::InvalidateRect(m_hWnd, NULL, FALSE);
return 0;
}
示例9: SetPos
void CControlUI::SetPos(RECT rc, bool bNeedInvalidate)
{
if( rc.right < rc.left ) rc.right = rc.left;
if( rc.bottom < rc.top ) rc.bottom = rc.top;
CDuiRect invalidateRc = m_rcItem;
if( ::IsRectEmpty(&invalidateRc) ) invalidateRc = rc;
if( m_bFloat ) {
CControlUI* pParent = GetParent();
/*if( pParent != NULL ) {
RECT rcParentPos = pParent->GetPos();
RECT rcCtrl = {rcParentPos.left + rc.left, rcParentPos.top + rc.top,
rcParentPos.left + rc.right, rcParentPos.top + rc.bottom};
m_rcItem = rcCtrl;
LONG width = rcParentPos.right - rcParentPos.left;
LONG height = rcParentPos.bottom - rcParentPos.top;
RECT rcPercent = {(LONG)(width*m_piFloatPercent.left), (LONG)(height*m_piFloatPercent.top),
(LONG)(width*m_piFloatPercent.right), (LONG)(height*m_piFloatPercent.bottom)};
m_cXY.cx = rc.left - rcPercent.left;
m_cXY.cy = rc.top - rcPercent.top;
m_cxyFixed.cx = rc.right - rcPercent.right - m_cXY.cx;
m_cxyFixed.cy = rc.bottom - rcPercent.bottom - m_cXY.cy;
}*/
}
else {
m_rcItem = rc;
}
m_rcItem = rc;
if( m_pManager == NULL ) return;
if( !m_bSetPos ) {
m_bSetPos = true;
if( OnSize ) OnSize(this);
m_bSetPos = false;
}
m_bUpdateNeeded = false;
if( bNeedInvalidate && IsVisible() ) {
invalidateRc.Join(m_rcItem);
CControlUI* pParent = this;
RECT rcTemp;
RECT rcParent;
while( pParent = pParent->GetParent() ) {
if( !pParent->IsVisible() ) return;
rcTemp = invalidateRc;
rcParent = pParent->GetPos();
if( !::IntersectRect(&invalidateRc, &rcTemp, &rcParent) ) return;
}
m_pManager->Invalidate(invalidateRc);
}
}
示例10: DUITRACE
STDMETHODIMP CActiveXCtrl::GetDC(LPCRECT pRect, DWORD grfFlags, HDC* phDC)
{
DUITRACE(_T("AX: CActiveXCtrl::GetDC"));
if( phDC == NULL ) return E_POINTER;
if( m_pOwner == NULL ) return E_UNEXPECTED;
*phDC = ::GetDC(m_pOwner->m_hwndHost);
if( (grfFlags & OLEDC_PAINTBKGND) != 0 ) {
CDuiRect rcItem = m_pOwner->GetPos();
if( !m_bWindowless ) rcItem.ResetOffset();
::FillRect(*phDC, &rcItem, (HBRUSH) (COLOR_WINDOW + 1));
}
return S_OK;
}
示例11: CalPos
RECT CEditWnd::CalPos()
{
CDuiRect rcPos = m_pOwner->GetPos();
RECT rcInset = m_pOwner->GetTextPadding();
rcPos.left += rcInset.left;
rcPos.top += rcInset.top;
rcPos.right -= rcInset.right;
rcPos.bottom -= rcInset.bottom;
LONG lEditHeight = m_pOwner->GetManager()->GetFontInfo(m_pOwner->GetFont())->tm.tmHeight;
if( lEditHeight < rcPos.GetHeight() ) {
rcPos.top += (rcPos.GetHeight() - lEditHeight) / 2;
rcPos.bottom = rcPos.top + lEditHeight;
}
return rcPos;
}
示例12: OnSize
LRESULT CMenuWnd::OnSize(UINT uMsg, WPARAM wParam, LPARAM lParam, BOOL& bHandled)
{
SIZE szRoundCorner = m_pm.GetRoundCorner();
if( !::IsIconic(*this) ) {
CDuiRect rcWnd;
::GetWindowRect(*this, &rcWnd);
rcWnd.Offset(-rcWnd.left, -rcWnd.top);
rcWnd.right++; rcWnd.bottom++;
HRGN hRgn = ::CreateRoundRectRgn(rcWnd.left, rcWnd.top, rcWnd.right, rcWnd.bottom, szRoundCorner.cx, szRoundCorner.cy);
::SetWindowRgn(*this, hRgn, TRUE);
::DeleteObject(hRgn);
}
bHandled = FALSE;
return 0;
}
示例13: sizeof
void CWindowWnd::FullScreen()
{
::GetClientRect(m_hWnd,&m_RestoreRect);
CPoint point;
::ClientToScreen(m_hWnd,&point);
m_RestoreRect.left=point.x;
m_RestoreRect.top=point.y;
m_RestoreRect.right+=point.x;
m_RestoreRect.bottom+=point.y;
MONITORINFO oMonitor = {};
oMonitor.cbSize = sizeof(oMonitor);
::GetMonitorInfo(::MonitorFromWindow(*this, MONITOR_DEFAULTTONEAREST), &oMonitor);
CDuiRect rcWork = oMonitor.rcWork;
::SetWindowPos( m_hWnd, NULL, rcWork.left, rcWork.top, rcWork.GetWidth(), rcWork.GetHeight(), SWP_SHOWWINDOW | SWP_NOZORDER );
}
示例14: OnSize
LRESULT CHelloWorld::OnSize( UINT uMsg, WPARAM wParam, LPARAM lParam, BOOL& bHandled )
{
SIZE szRoundCorner = m_pm.GetRoundCorner(); // GetRoundCorner用来获取xml中的Window标签中roundcorner属性值,该值指示圆角的长宽
if( !::IsIconic(*this) && (szRoundCorner.cx != 0 || szRoundCorner.cy != 0) ) {
CDuiRect rcWnd;
::GetWindowRect(*this, &rcWnd);
rcWnd.Offset(-rcWnd.left, -rcWnd.top); // rcWnd.right就成为了窗口的宽度了
rcWnd.right++; rcWnd.bottom++;
HRGN hRgn = ::CreateRoundRectRgn(rcWnd.left, rcWnd.top, rcWnd.right, rcWnd.bottom, szRoundCorner.cx, szRoundCorner.cy);
::SetWindowRgn(*this, hRgn, TRUE); // 窗口圆角化处理
::DeleteObject(hRgn);
}
bHandled = FALSE;
return 0;
}
示例15: sizeof
LRESULT imsdkDemoLogin::OnGetMinMaxInfo(UINT uMsg, WPARAM wParam, LPARAM lParam, BOOL& bHandled)
{
MONITORINFO oMonitor = {};
oMonitor.cbSize = sizeof(oMonitor);
::GetMonitorInfo(::MonitorFromWindow(*this, MONITOR_DEFAULTTOPRIMARY), &oMonitor);
CDuiRect rcWork = oMonitor.rcWork;
rcWork.Offset(-oMonitor.rcMonitor.left, -oMonitor.rcMonitor.top);
LPMINMAXINFO lpMMI = (LPMINMAXINFO)lParam;
lpMMI->ptMaxPosition.x = rcWork.left;
lpMMI->ptMaxPosition.y = rcWork.top;
lpMMI->ptMaxSize.x = rcWork.right;
lpMMI->ptMaxSize.y = rcWork.bottom;
bHandled = FALSE;
return 0;
}