Пример #1
0
void CCellListCtrl::OnPaint()
{
	CPaintDC dc(this); // device context for painting

	int dcStateID = dc.SaveDC();

	if (m_hFont != NULL) {
		dc.SelectObject(CFont::FromHandle(m_hFont));
	}

	CRect rcClient(0,0,0,0);
	GetClientRect(&rcClient);

	int eachHeight = GetItemHeightInPixel(&dc);

	dc.SetTextColor(m_textColor);
	dc.SetBkColor(m_backColor);

	int itemCount = GetItemCount();
	int columnCount = GetColumnCount();

	for (int iItem = 0; iItem < itemCount; ++iItem) {
		int currentCellLeft = 0;
		CRect rcLine(0, iItem * eachHeight, rcClient.right, (iItem + 1) * eachHeight);
		dc.FillSolidRect(&rcLine, dc.GetBkColor());
		for (int iColumn = 0; iColumn < columnCount; ++iColumn) {
			int eachWidth = GetColumnWidth(iColumn);
			CRect rcCell(currentCellLeft, rcLine.top, currentCellLeft + eachWidth, rcLine.bottom);
			dc.DrawText(GetItemText(iItem, iColumn), -1, &rcCell, DT_LEFT | DT_NOPREFIX);
			currentCellLeft += eachWidth;
		}
	}

	dc.RestoreDC(dcStateID);
}
void CXTPEditListBoxToolBar::OnNcPaint()
{
    CXTPWinThemeWrapper wrpTreeView;
    wrpTreeView.OpenTheme(0, L"LISTBOX");
    if (wrpTreeView.IsAppThemed() && wrpTreeView.IsAppThemeReady() && (GetOwner()->GetExStyle() & WS_EX_CLIENTEDGE))
    {
        CXTPWindowRect rc(this);
        CXTPClientRect rcClient(this);

        COLORREF clr = GetXtremeColor(COLOR_BTNSHADOW);
        if (rc.Width() == rcClient.Width() + 2 &&
                SUCCEEDED(wrpTreeView.GetThemeColor(0, 0, TMT_BORDERCOLOR, &clr)))
        {
            CWindowDC dc(this);

            dc.FillSolidRect(0, 0, rc.Width(), 1, clr);
            dc.FillSolidRect(0, 0, 1, rc.Height(), clr);
            dc.FillSolidRect(rc.Width() - 1, 0, 1, rc.Height(), clr);
            dc.FillSolidRect(1, rc.Height() - 1, rc.Width() - 2, 1, GetXtremeColor(COLOR_3DFACE));
            return;
        }
    }

    Default();
}
void CXTPSkinObjectProgress::DoStep(int nStep)
{
	CXTPClientRect rcClient(this);

	CXTPSkinManagerClass* pClassProgress = GetSkinClass();

	DWORD dwStyle = GetStyle();
	BOOL bVert = dwStyle & PBS_VERTICAL;
	CRect rcMargins = pClassProgress->GetThemeRect(bVert ? PP_BARVERT : PP_BAR, 0,  TMT_SIZINGMARGINS);

	rcClient.DeflateRect(rcMargins);

	int dxBlock = pClassProgress->GetThemeInt(0, 0, TMT_PROGRESSCHUNKSIZE, rcClient.Height() * 2 / 3);
	int dxSpace = pClassProgress->GetThemeInt(0, 0, TMT_PROGRESSSPACESIZE, 2);

	if (dxBlock == 1 && dxSpace == 0)
		dxBlock = 8;

	m_nMarqueePos += (dxBlock + dxSpace) * nStep;

	if (m_nMarqueePos > rcClient.right)
		m_nMarqueePos = rcClient.left + m_nMarqueePos - rcClient.right;

	Invalidate(FALSE);
}
void CXTPEditListBoxToolBar::MoveButtons()
{
    if (!::IsWindow(m_hWnd))
        return;

    // Set the initial size for the first button.
    CXTPClientRect rcClient(this);
    rcClient.left = rcClient.right-BTN_OFFSET;

    for (int i = _countof(m_arButton)-1; i >= 0 ; --i)
    {
        if (::IsWindow(m_arButton[i].GetSafeHwnd()))
        {
            m_arClipRect[i] = rcClient;

            ::SetWindowPos(m_arButton[i].GetSafeHwnd(), NULL, rcClient.left, rcClient.top,
                           rcClient.Width(), rcClient.Height(), SWP_FRAMECHANGED);
            rcClient.OffsetRect(-BTN_OFFSET, 0);
        }
        else
        {
            m_arClipRect[i] = CRect(0, 0, 0, 0);
        }
    }

    Invalidate();
}
Пример #5
0
/*virtual*/ void CWndToolbox::OnPaint()
{
	CRect rcClient(m_rcClient);
	if ( m_bFirst )
	{
		CDesign::Shadow(rcClient, 0xc0ffffff); // aa rr gg bb
		//rcClient.Deflate( 2, 2, 2, 2 );
		//CDesign::Shadow(rcClient, 0x80ffffff); // aa rr gg bb
		m_bFirst = false;
	}

	if ( m_nFocus == -1 )
		m_nFocus = 0;

	#define FOC(n) (m_nFocus==n)?RGB565(ffffff):RGB565(808080)
	PrintBold( m_rcClient.left + 8, m_rcClient.top + 2 + 0*16, FOC(0), RGB565(000000), "\x10 Waveform manager");
	PrintBold( m_rcClient.left + 8, m_rcClient.top + 2 + 1*16, FOC(1), RGB565(000000), 
		m_bAdcEnabled ? "\x10 Pause" : "\x10 Resume" );
	PrintBold( m_rcClient.left + 8, m_rcClient.top + 2 + 2*16, FOC(2), RGB565(000000), "\x10 Reset setings");

	char str[32];
	BIOS::DBG::sprintf(str, "bat %d%%", BIOS::SYS::GetBattery());
	BIOS::LCD::Line( m_rcClient.left + 4, m_rcClient.bottom - 20, 
		m_rcClient.right - 4, m_rcClient.bottom - 20, RGB565(e0e0e0) );
	BIOS::LCD::Line( m_rcClient.left + 4, m_rcClient.bottom - 19, 
		m_rcClient.right - 4, m_rcClient.bottom - 19, RGB565(808080) );
	BIOS::LCD::Printf( m_rcClient.left + 8, m_rcClient.bottom - 16, RGB565(000000), RGBTRANS, "\x10 Select  \xfe Close");
	PrintBold( m_rcClient.left + 8 + 120, m_rcClient.bottom - 16 - 18, RGB565(ffff00), RGB565(000000), str);
	//BIOS::LCD::Printf( m_rcClient.left + 8 + 130, m_rcClient.top + 8, RGB565(000000), RGBTRANS, str);
}
Пример #6
0
static void DrawProperties(HWND hwnd, HDC hdc)
{
    PropertiesLayout *layoutData = FindPropertyWindowByHwnd(hwnd);

    ScopedFont fontLeftTxt(GetSimpleFont(hdc, LEFT_TXT_FONT, LEFT_TXT_FONT_SIZE));
    ScopedFont fontRightTxt(GetSimpleFont(hdc, RIGHT_TXT_FONT, RIGHT_TXT_FONT_SIZE));

    HGDIOBJ origFont = SelectObject(hdc, fontLeftTxt); /* Just to remember the orig font */

    SetBkMode(hdc, TRANSPARENT);

    ClientRect rcClient(hwnd);
    FillRect(hdc, &rcClient.ToRECT(), gBrushAboutBg);

    SetTextColor(hdc, WIN_COL_BLACK);

    /* render text on the left*/
    SelectObject(hdc, fontLeftTxt);
    for (size_t i = 0; i < layoutData->Count(); i++) {
        PropertyEl *el = layoutData->At(i);
        DrawText(hdc, el->leftTxt, -1, &el->leftPos.ToRECT(), DT_RIGHT | DT_NOPREFIX);
    }

    /* render text on the right */
    SelectObject(hdc, fontRightTxt);
    for (size_t i = 0; i < layoutData->Count(); i++) {
        PropertyEl *el = layoutData->At(i);
        RectI rc = el->rightPos;
        if (rc.x + rc.dx > rcClient.x + rcClient.dx - PROPERTIES_RECT_PADDING)
            rc.dx = rcClient.x + rcClient.dx - PROPERTIES_RECT_PADDING - rc.x;
        DrawText(hdc, el->rightTxt, -1, &rc.ToRECT(), DT_LEFT | DT_PATH_ELLIPSIS | DT_NOPREFIX);
    }

    SelectObject(hdc, origFont);
}
Пример #7
0
// in order to host SumatraPDF as a plugin, create a (child) window and
// handle the following messages for it:
LRESULT CALLBACK PluginParentWndProc(HWND hwnd, UINT msg, WPARAM wParam, LPARAM lParam)
{
    if (WM_CREATE == msg) {
        // run SumatraPDF.exe with the -plugin command line argument
        PluginStartData *data = (PluginStartData *)((CREATESTRUCT *)lParam)->lpCreateParams;
        ScopedMem<WCHAR> cmdLine(str::Format(L"-plugin %d \"%s\"", hwnd, data->filePath));
        if (data->fileOriginUrl) {
            cmdLine.Set(str::Format(L"-plugin \"%s\" %d \"%s\"", data->fileOriginUrl, hwnd, data->filePath));
        }
        ShellExecute(hwnd, L"open", data->sumatraPath, cmdLine, NULL, SW_SHOW);
    }
    else if (WM_SIZE == msg) {
        // resize the SumatraPDF window
        HWND hChild = FindWindowEx(hwnd, NULL, NULL, NULL);
        if (hChild) {
            ClientRect rcClient(hwnd);
            MoveWindow(hChild, rcClient.x, rcClient.y, rcClient.dx, rcClient.dy, FALSE);
        }
        else {
            InvalidateRect(hwnd, NULL, TRUE);
            UpdateWindow(hwnd);
        }
    }
    else if (WM_COPYDATA == msg) {
        // handle a URL to open externally (or prevent it)
        HWND hChild = FindWindowEx(hwnd, NULL, NULL, NULL);
        COPYDATASTRUCT *cds = (COPYDATASTRUCT *)lParam;
        if (cds && 0x4C5255 /* URL */ == cds->dwData && (HWND)wParam == hChild) {
            ScopedMem<WCHAR> url(str::conv::FromUtf8((const char *)cds->lpData));
            ShellExecute(hChild, L"open", url, NULL, NULL, SW_SHOW);
            return TRUE;
        }
    }
    else if (WM_PAINT == msg) {
        // paint an error message (only needed if SumatraPDF couldn't be run)
        PAINTSTRUCT ps;
        HDC hDC = BeginPaint(hwnd, &ps);
        RECT rcClient = ClientRect(hwnd).ToRECT();
        HBRUSH brushBg = CreateSolidBrush(0xCCCCCC);
        FillRect(hDC, &rcClient, brushBg);
        LOGFONT lf = { 0 };
        lf.lfHeight = -14;
        str::BufSet(lf.lfFaceName, dimof(lf.lfFaceName), L"MS Shell Dlg");
        HFONT hFont = CreateFontIndirect(&lf);
        hFont = (HFONT)SelectObject(hDC, hFont);
        SetTextColor(hDC, 0x000000);
        SetBkMode(hDC, TRANSPARENT);
        DrawText(hDC, L"Error: Couldn't run SumatraPDF!", -1, &rcClient, DT_CENTER | DT_VCENTER | DT_SINGLELINE | DT_NOPREFIX);
        DeleteObject(SelectObject(hDC, hFont));
        DeleteObject(brushBg);
        EndPaint(hwnd, &ps);
    }
    else if (WM_DESTROY == msg) {
        // clean-up happens automatically when the window is destroyed
        PostQuitMessage(0);
    }

    return DefWindowProc(hwnd, msg, wParam, lParam);
}
Пример #8
0
void CDxDatePickerMonth::DrawMonthHeader(CDCHandle dc)
{
    if (m_rcHeader.IsRectEmpty())
        return;

    COleDateTime dtMonth = GetMonth();
    CRect rcHeader = m_rcHeader;
    CRect rcLeftScroll = m_rcLeftScroll;
    CRect rcRightScroll = m_rcRightScroll;

    CRect rcClient(m_pControl->m_rcControl);
    //dc.Draw3dRect(0, 0, rcClient.Width(), rcClient.Height(), m_clrStaticBorder, m_clrStaticBorder);

    CRect rcHeaderBk = m_rcMonth;
    rcHeaderBk.bottom = rcHeader.bottom;

    // fill background
    dc.FillSolidRect(rcHeaderBk, RGB(191, 219, 255));

    // draw header text
    dc.SetBkColor(GetSysColor(COLOR_BTNFACE));
    dc.SetTextColor(GetSysColor(COLOR_WINDOWTEXT));

    HFONT hFontOld = (HFONT)dc.SelectFont(CDxFontManager::GetSingleton().GetFont(DUIF_DEFAULTFONT));

    CString strText;

    if (!m_pControl->m_strYearMonthFormat.IsEmpty())
    {
        //strText = GetDateFormat(dtMonth, pControl->m_strYearMonthFormat);
    }
    else
    {
        strText.Format(_T("%s %d"), (LPCTSTR)m_pControl->GetMonthName( dtMonth.GetMonth()), dtMonth.GetYear());
    }

    dc.DrawText(strText, strText.GetLength(), &rcHeader, DT_SINGLELINE | DT_VCENTER | DT_CENTER);

    // draw left scroll triangle
    if (!rcLeftScroll.IsRectEmpty())
    {
        // draw left triangle itself
        if (GetShowLeftScroll())
            DrawScrollTriangle(dc, rcLeftScroll, TRUE, m_clrMonthHeaderButton, m_pControl->m_bYearsTriangle);
    }

    // draw right scroll triangle
    if (!rcRightScroll.IsRectEmpty())
    {
        // draw right triangle itself
        if (GetShowRightScroll())
            DrawScrollTriangle(dc, rcRightScroll, FALSE, m_clrMonthHeaderButton, m_pControl->m_bYearsTriangle);
    }

    dc.SelectFont(hFontOld);
}
Пример #9
0
void CDatePickerDialogBar::OnSize(UINT nType, int cx, int cy)
{
	CDialogBar::OnSize(nType, cx, cy);

	if (!m_wndDatePicker.m_hWnd)
		return;
		
	CXTPClientRect rcClient(this);
	CXTPWindowRect rcDatePicker(&m_wndDatePicker);
	ScreenToClient(&rcDatePicker);
	rcDatePicker.top = rcClient.top;
	rcDatePicker.bottom = rcClient.bottom;
	
	m_wndDatePicker.MoveWindow(&rcDatePicker);
}
Пример #10
0
void CXTPShortcutListBox::OnPaint()
{
    CPaintDC dc(this); // device context for painting

    // Get the client rect.
    CXTPClientRect rcClient(this);

    // Paint to a memory device context to help
    // eliminate screen flicker.
    CXTPBufferDC memDC(dc);
    memDC.FillSolidRect(rcClient, GetTheme()->m_crgBack);

    // Now let the window do its default painting...
    CWnd::DefWindowProc (WM_PAINT, (WPARAM)memDC.m_hDC, 0);
}
Пример #11
0
void CSizableReBar::OnNcCalcSize( BOOL bCalcValidRects, NCCALCSIZE_PARAMS FAR* lpncsp )
{
    CControlBar::OnNcCalcSize( bCalcValidRects, lpncsp );

    CRect rcWindow( lpncsp->rgrc[ 0 ] );
    CRect rcClient( rcWindow );
    CRect rcEdge;
    if ( GetSizingEdgeRect( rcWindow, rcEdge, GetSizingEdgeHitCode() ) )
    {
        if ( rcClient.SubtractRect( rcWindow, rcEdge ) )
        {
            lpncsp->rgrc[ 0 ] = rcClient;
        }
    }
}
Пример #12
0
void CScanMgrDlg::DrawBorder(CDC *pDC)
{
	CPen *pOldPen = NULL;
	CPen pPen;
	CRect rcClient(0, 0, 0, 0);
	GetClientRect(&rcClient);
	pPen.CreatePen(PS_SOLID, 1, RGB(118, 190, 254));

	pDC->SelectStockObject(NULL_BRUSH);
	pOldPen = pDC->SelectObject(&pPen);
	pDC->Rectangle(&rcClient);
	pDC->SelectObject(pOldPen);
	pPen.Detach();
//	ReleaseDC(pDC);
}
Пример #13
0
void CBlendSelectWnd::OnPaint()
{
	CPaintDC dc(this);

	CRect rcClient(0,0,m_dwWidth, m_dwMargin + m_dwTitleHeight + m_dwMargin);

	CDC dcMem;
	if (!dcMem.CreateCompatibleDC(&dc))
		return;

	CBitmap bm;
	bm.CreateCompatibleBitmap(&dc, rcClient.Width(), rcClient.Height());
	dcMem.SelectObject(&bm);

	dcMem.FillSolidRect(&rcClient, m_crBkgnd);

	dcMem.SetTextColor(m_crText);
	dcMem.SetBkColor(m_crBkgnd);

	// Draw Close Button
	::DrawIconEx(dcMem.GetSafeHdc(), m_rcBtnClose.left, m_rcBtnClose.top, 
		m_bCloseDown ? m_hIconCloseDown : m_hIconClose, 16, 16, 0, NULL, DI_NORMAL);

	// Draw Icon
	int nIconSize = 0;

	if (m_hIcon) {
		dcMem.DrawIcon(rcClient.left + m_dwMargin, rcClient.top + m_dwMargin, m_hIcon);
		nIconSize = 32;
	}

	// Draw Title
	CRect rcTitle = rcClient;
	rcTitle.left += (nIconSize > 0) ? m_dwMargin * 2 + nIconSize : m_dwMargin;
	rcTitle.right -= m_dwMargin;
	rcTitle.top += m_dwMargin;
	rcTitle.bottom = rcClient.bottom;

	if (m_ftTitle.GetSafeHandle()) {
		dcMem.SelectObject(&m_ftTitle);
	}

	dcMem.DrawText(m_strTitle, m_strTitle.GetLength(), &rcTitle, DT_WORDBREAK | DT_NOPREFIX);

	dc.BitBlt(0, 0, rcClient.Width(), rcClient.Height(),
		&dcMem, 0, 0, SRCCOPY);
}
Пример #14
0
void CMiniMule::AutoSizeAndPosition(CSize sizClient)
{
	TRACE("AutoSizeAndPosition: %dx%d\n", sizClient.cx, sizClient.cy);
	CSize sizDesktop(GetSystemMetrics(SM_CXSCREEN), GetSystemMetrics(SM_CYSCREEN));
	if (sizClient.cx > sizDesktop.cx/2)
		sizClient.cx = sizDesktop.cx/2;
	if (sizClient.cy > sizDesktop.cy/2)
		sizClient.cy = sizDesktop.cy/2;

	CRect rcWnd;
	GetWindowRect(&rcWnd);
	if (sizClient.cx > 0 && sizClient.cy > 0)
	{
		CRect rcClient(0, 0, sizClient.cx, sizClient.cy);
		AdjustWindowRectEx(&rcClient, GetStyle(), FALSE, GetExStyle());
		rcClient.OffsetRect(-rcClient.left, -rcClient.top);
		rcWnd = rcClient;
	}

	CRect rcTaskbar(0, sizDesktop.cy - 34, sizDesktop.cx, sizDesktop.cy);
	HWND hWndTaskbar = ::FindWindow(_T("Shell_TrayWnd"), NULL);
	if (hWndTaskbar)
		::GetWindowRect(hWndTaskbar, &rcTaskbar);
	CPoint ptWnd;
	UINT uTaskbarPos = GetTaskbarPos(hWndTaskbar);
	switch (uTaskbarPos)
	{
		case ABE_TOP:
			ptWnd.x = sizDesktop.cx - 8 - rcWnd.Width();
			ptWnd.y = rcTaskbar.Height() + 8;
			break;
		case ABE_LEFT:
			ptWnd.x = rcTaskbar.Width() + 8;
			ptWnd.y = sizDesktop.cy - 8 - rcWnd.Height();
			break;
		case ABE_RIGHT:
			ptWnd.x = sizDesktop.cx - rcTaskbar.Width() - 8 - rcWnd.Width();
			ptWnd.y = sizDesktop.cy - 8 - rcWnd.Height();
			break;
		default:
			ASSERT( uTaskbarPos == ABE_BOTTOM );
			ptWnd.x = sizDesktop.cx - 8 - rcWnd.Width();
			ptWnd.y = sizDesktop.cy - rcTaskbar.Height() - 8 - rcWnd.Height();
	}

	SetWindowPos(NULL, ptWnd.x, ptWnd.y, rcWnd.Width(), rcWnd.Height(), SWP_NOZORDER | SWP_SHOWWINDOW);
}
Пример #15
0
void CXTPMarqueeCtrl::OnPaint()
{
    if (IsMarquee())
    {
        CXTPClientRect rcClient(this);

        CPaintDC dc(this);
        CXTPBufferDC dcMem(dc);

        OnDrawBackground(&dcMem, rcClient);
        OnDrawMarquee(&dcMem, rcClient);
    }
    else
    {
        CProgressCtrl::OnPaint();
    }
}
void QSideViewImageWidget::SetImage( QImage* bmp )
{
    QRect rcClient( 0,0,width()-1,height()-1 );

    rcClient.adjust( 1, 1, -1, -1 );

    if( !m_bmpImage || m_bmpImage->isNull() )
    {
        m_bmpImage = new QImage( rcClient.width(), rcClient.height(), QImage::Format_RGB32 );
        m_bmpImage->fill( Qt::black );
    }
    else
    {
        if( m_bmpImage->width() != rcClient.width() ||
                m_bmpImage->height() != rcClient.height() )
        {
            delete m_bmpImage;
            m_bmpImage = NULL;
            m_bmpImage = new QImage( rcClient.width(), rcClient.height(), QImage::Format_RGB32 );
            m_bmpImage->fill( Qt::black );
        }
    }

    QPainter dc( m_bmpImage );

    if( !bmp )
    {
        QString str( text() );

        dc.fillRect( rcClient, Qt::black );

        dc.setPen( Qt::white );
        dc.drawText( rcClient, str, QTextOption( Qt::AlignVCenter | Qt::AlignHCenter ) );
        m_nOrignImageHeight = 0;
    }
    else
    {
        dc.drawImage( rcClient, *bmp, QRect( 0, 7, bmp->width(), bmp->height()-14 ) );
        m_nOrignImageHeight = bmp->height()-14;
    }

    update();
}
Пример #17
0
void CSingleExamDlg::DrawBorder(CDC *pDC)
{
	CPen *pOldPen = NULL;
	CPen pPen;
	CRect rcClient(0, 0, 0, 0);
	GetClientRect(&rcClient);
	if (!_bMouseInDlg)
		pPen.CreatePen(PS_SOLID, 1, RGB(166, 218, 239));
	else
		pPen.CreatePen(PS_SOLID, 1, RGB(106, 218, 239));

	pDC->SelectStockObject(NULL_BRUSH);
	pOldPen = pDC->SelectObject(&pPen);
//	pDC->Rectangle(&rcClient);
	pDC->RoundRect(rcClient, CPoint(10, 10));
	pDC->SelectObject(pOldPen);
	pPen.Detach();
//	ReleaseDC(pDC);
}
Пример #18
0
bool NewBrowserInstance(IUIControler *pUIControl,PVOID *ppPageRef,CString strUrl,LONG * nNewPageID/*=NULL*/)
{
	IWBCoreNotifyer *pCoreNotify = NULL;
	IUINotifyer *pUINotify = NULL;
	if( pUIControl == NULL )
	{
		//创建一个新框架
		pUIControl = NewMainFrame(NULL,NULL,theApp.m_bMutiTab,theApp.m_bMenuBar,theApp.m_bToolBar,theApp.m_bCommandBar);

		//创建一个新的UI和浏览器内核通知实例
		pUINotify = new INotifyerInstance(pUIControl);
	}
	else
	{
		pUIControl->GetNofiyerPoint(&pUINotify);
	}
	
	pCoreNotify = dynamic_cast<IWBCoreNotifyer *>(pUINotify);


	//创建一个新的浏览器内核
	HANDLE hPageThread = NULL;
	CRect rcClient(0,0,800,600);
	pUIControl->ControlQueryClientRect(&rcClient);
	IWBCoreControler *pWBCoreControl = NewWBCore( pCoreNotify, ppPageRef,&hPageThread,NULL ,rcClient,nNewPageID);
	
	HWND hCoreWnd = NULL;
	pWBCoreControl->ControlQueryWnd(&hCoreWnd);

	SetPropW(hCoreWnd,L"CorePageThread",hPageThread);

	pUIControl->SetNofiyerPoint(pUINotify);

	//连接内核和框架
	AttachWBCoreToFrame(pWBCoreControl,pCoreNotify,pUIControl);
	if ( strUrl.GetLength() > 0 )
	{
		pWBCoreControl->ControlGotoUrl(strUrl);
	}

	return true;
}
Пример #19
0
static void DrawProperties(HWND hwnd, HDC hdc)
{
    PropertiesLayout *layoutData = FindPropertyWindowByHwnd(hwnd);

    ScopedFont fontLeftTxt(CreateSimpleFont(hdc, LEFT_TXT_FONT, LEFT_TXT_FONT_SIZE));
    ScopedFont fontRightTxt(CreateSimpleFont(hdc, RIGHT_TXT_FONT, RIGHT_TXT_FONT_SIZE));

    HGDIOBJ origFont = SelectObject(hdc, fontLeftTxt); /* Just to remember the orig font */

    SetBkMode(hdc, TRANSPARENT);

    ClientRect rcClient(hwnd);
    RECT rTmp = rcClient.ToRECT();
    ScopedGdiObj<HBRUSH> brushAboutBg(CreateSolidBrush(GetAboutBgColor()));
    FillRect(hdc, &rTmp, brushAboutBg);

    SetTextColor(hdc, WIN_COL_BLACK);

    /* render text on the left*/
    SelectObject(hdc, fontLeftTxt);
    for (size_t i = 0; i < layoutData->Count(); i++) {
        PropertyEl *el = layoutData->At(i);
        const WCHAR *txt = el->leftTxt;
        rTmp = el->leftPos.ToRECT();
        DrawText(hdc, txt, -1, &rTmp, DT_RIGHT | DT_NOPREFIX);
    }

    /* render text on the right */
    SelectObject(hdc, fontRightTxt);
    for (size_t i = 0; i < layoutData->Count(); i++) {
        PropertyEl *el = layoutData->At(i);
        const WCHAR *txt = el->rightTxt;
        RectI rc = el->rightPos;
        if (rc.x + rc.dx > rcClient.x + rcClient.dx - PROPERTIES_RECT_PADDING)
            rc.dx = rcClient.x + rcClient.dx - PROPERTIES_RECT_PADDING - rc.x;
        rTmp = rc.ToRECT();
        UINT format = DT_LEFT | DT_NOPREFIX | (el->isPath ? DT_PATH_ELLIPSIS : DT_WORD_ELLIPSIS);
        DrawText(hdc, txt, -1, &rTmp, format);
    }

    SelectObject(hdc, origFont);
}
Пример #20
0
bool CHtmlCtrl::Create(CWnd* pParent, const RECT& rc, LPCTSTR pszHomeURL /*= NULL*/, bool fBtnText /*= true*/)
{
    AfxEnableControlContainer();
    CRect rcClient(rc);

    if (!CreateControl(CLSID_WebBrowser, NULL, 
            WS_VISIBLE | WS_CHILD, rcClient, pParent, AFX_IDW_PANE_FIRST)) {
        TRACE0("Unable to create control");
        return false;
    }

    LPUNKNOWN lpUnk = GetControlUnknown();
    HRESULT hr = lpUnk->QueryInterface(IID_IWebBrowser2, (void**) &m_pBrowser);
    if (FAILED(hr)) {
        m_pBrowser = NULL;
        TRACE0("Unable to create web browser");
        return false;
    }

    return true;
}
Пример #21
0
NPError NP_LOADDS NPP_SetWindow(NPP instance, NPWindow *npwin)
{
    InstanceData *data;

    if (!instance)
    {
        plogf("sp: NPP_SetWindow() errro: NPERR_INVALID_INSTANCE_ERROR");
        return NPERR_INVALID_INSTANCE_ERROR;
    }

    plogf("sp: NPP_SetWindow()");

    data = (InstanceData *)instance->pdata;
    if (!npwin)
    {
        data->npwin = NULL;
    }
    else if (data->npwin != npwin)
    {
        HWND hWnd = (HWND)npwin->window;
        
        data->npwin = npwin;
        SetWindowLongPtr(hWnd, GWLP_USERDATA, (LONG_PTR)data);
        SetWindowLongPtr(hWnd, GWLP_WNDPROC, (LONG_PTR)PluginWndProc);
    }
    else
    {
        // The plugin's window hasn't changed, just its size
        HWND hWnd = (HWND)npwin->window;
        HWND hChild = FindWindowEx(hWnd, NULL, NULL, NULL);
        
        if (hChild)
        {
            ClientRect rcClient(hWnd);
            MoveWindow(hChild, rcClient.x, rcClient.y, rcClient.dx, rcClient.dy, FALSE);
        }
    }
    
    return NPERR_NO_ERROR;
}
Пример #22
0
BOOL COptLgnDlg::OnInitDialog()
{
	CDialog::OnInitDialog();

	CRect rcClient(0, 0, 469, 179);
	MoveWindow(&rcClient, FALSE);
	CRgn rgn;
	rgn.CreateRoundRectRgn(0, 0, rcClient.Width(), rcClient.Height(), 10, 10);

	CRect rc = CRect(10, 5, 10 + 100, 30);
	m_btnCaption.MoveWindow(&rc);

	rc = CRect(rcClient.right-56, 3, rcClient.right-15, 24+3);
	m_btnClose.MoveWindow(&rc);
	m_btnClose.SetImage(TEXT("Skin/Wnd/SysSet/按钮_关闭_默认状态.png"), 
		TEXT("Skin/Wnd/SysSet/按钮_关闭_鼠标经过.png"), TEXT("Skin/Wnd/SysSet/按钮_关闭_鼠标按下.png"));

	rc = CRect(188, 60, 400, 85);
	m_btnTip.MoveWindow(&rc);

	rc.OffsetRect(5, 32);
	rc.right = rc.left + 245; rc.bottom = rc.top + 16;
	m_edtPassword.MoveWindow(&rc);

	rc = CRect(200, 130, 200+97, 130+25);
	m_btnOK.SetImage(TEXT("Skin/Wnd/optlogin/按钮_登陆_默认状态.png"),
		TEXT("Skin/Wnd/optlogin/按钮_登陆_鼠标经过.png"));
	m_btnOK.MoveWindow(&rc);

	rc.OffsetRect(rc.Width() + 20, 0);
	m_btnCancel.SetImage(TEXT("Skin/Wnd/optlogin/按钮_取消_默认状态.png"),
		TEXT("Skin/Wnd/optlogin/按钮_取消_鼠标经过.png"));
	m_btnCancel.MoveWindow(&rc);

	SetWindowRgn(rgn, TRUE);
	CenterWindow();

	m_edtPassword.SetFocus();
	return FALSE;
}
Пример #23
0
BOOL CXTPHeaderCtrl::RecalcLayout()
{
	if (!::IsWindow(m_hWnd))
		return FALSE;

	HD_LAYOUT hdl;

	CXTPClientRect rcClient(this);
	hdl.prc = &rcClient;

	WINDOWPOS wp;
	ZeroMemory(&wp, sizeof(WINDOWPOS));
	hdl.pwpos = &wp;

	if (!Header_Layout(m_hWnd, &hdl))
		return FALSE;

	// Set the size, position, and visibility of the header window.
	::SetWindowPos(m_hWnd, wp.hwndInsertAfter, wp.x, wp.y,
		wp.cx, wp.cy, wp.flags | SWP_FRAMECHANGED);

	CWnd* pWndParent = GetParent();
	if (!::IsWindow(pWndParent->GetSafeHwnd()))
		return FALSE;

	// Force list control to recalculate it's layout.
	CXTPWindowRect rcWindow(pWndParent);

	const int cx = rcWindow.Width();
	const int cy = rcWindow.Height();

	pWndParent->SetWindowPos(NULL, 0, 0, cx, cy+1,
		SWP_NOMOVE | SWP_FRAMECHANGED);

	pWndParent->SetWindowPos(NULL, 0, 0, cx, cy,
		SWP_NOMOVE | SWP_FRAMECHANGED);

	return TRUE;
}
void QAdvancedCalibrationWidget::paintEvent(QPaintEvent *)
{
    QPainter painter;

    QRect rcClient( 0, 0, width()-1, height()-1 );

    painter.begin( this );

    switch( m_eCurrentPart )
    {
    case spDetectionRange:
        m_DetectionRange.draw( painter, rcClient );
        break;
    case spBent:
        m_BentAdjustment.draw( painter, rcClient );
        break;
    default:
        break;
    }

    QFont ft( font() );
    ft.setPixelSize( rcClient.height() / 30 );
    ft.setWeight(QFont::Black);

    painter.setFont( ft );
    QFontMetricsF fm( ft );
    qreal dW = fm.width( m_strEscapeMsg );
    qreal dH = fm.height();
    QRectF rcText( rcClient.center().x() - (dW / 2.f),
                  rcClient.height() / 4 - (dH / 2.f),
                  dW, dH );

    QPen penText( Qt::SolidLine );
    penText.setColor( QColor(160,160,160) );
    painter.setPen( penText );
    painter.drawText( rcText, m_strEscapeMsg, QTextOption(Qt::AlignCenter) );

    painter.end();
}
Пример #25
0
BOOL CUptOptDlg::OnInitDialog()
{
	CDialog::OnInitDialog();
	CRect rcClient(0, 0, 356, 218);
	CRgn rgn;
	rgn.CreateRoundRectRgn(rcClient.left, rcClient.top, rcClient.right, rcClient.bottom, 5, 5);

	CRect rc = rcClient;
	rc.left = rc.right - 51;
	rc.right = rc.right - 10;
	rc.bottom = rc.top + 24;
	m_btnClose.MoveWindow(&rc);
	m_btnClose.SetImage(TEXT("Skin/Wnd/GongGao/x.png"), TEXT("Skin/Wnd/GongGao/x_a.png"));

	rc = CRect(60, 52, 260, 76);
	m_btnQuick.MoveWindow(&rc);
	m_btnQuick.SetCheck(BST_CHECKED);

	rc.OffsetRect(0, 40);
	m_btnForce.MoveWindow(&rc);

	rc.OffsetRect(-10, 60);
	rc.right = rc.left + 97; rc.bottom = rc.top + 25;
	m_btnOK.SetImage(TEXT("Skin/Wnd/GongGao/按钮_确定_默认状态.png"), 
		TEXT("Skin/Wnd/GongGao/按钮_确定_鼠标经过.png"));
	m_btnOK.MoveWindow(&rc);

	rc.OffsetRect(rc.Width() + 20, 0);
	m_btnCancel.SetImage(TEXT("Skin/Wnd/GongGao/button03.png"), 
		TEXT("Skin/Wnd/GongGao/按钮_取消_鼠标经过.png"));
	m_btnCancel.MoveWindow(&rc);

	MoveWindow(&rcClient, FALSE);
	CenterWindow();
	SetWindowRgn(rgn, TRUE);

	return TRUE;
}
Пример #26
0
void CTrashCleanCtrl::OnPaint(CDCHandle /*dcHandle*/)
{
	CPaintDC dc(m_hWnd);
	CBitmap memBmp;
	CDC memDC;
	CRect rcClient(m_rcClient);
	CString str;
// 	str.Format(L"paint times is %d\n", counter++);
// 	OutputDebugStr(str);
//	dc.FillSolidRect(m_rcRealClient, RGB(255, 255, 255));
    if (m_vecTrashItems.size() <= 0)
    {
        CString strWait = L"正在加载,请稍候...";
        HFONT hFont = KuiFontPool::GetFont(FALSE, FALSE, FALSE);
        HFONT oldFont = dc.SelectFont(hFont);
        CRect rcDraw(m_rcClient);
        rcDraw.top += 50;
        dc.FillSolidRect(m_rcRealClient, RGB(255, 255, 255));
        dc.DrawText(strWait, strWait.GetLength(), &rcDraw, DT_CENTER | DT_VCENTER);
        dc.SelectFont(oldFont);
        return;
    }
	memDC.CreateCompatibleDC(dc.m_hDC);
	memBmp.CreateCompatibleBitmap(dc.m_hDC, m_rcRealClient.Width(), m_rcRealClient.Height());
	memDC.SetBkMode(TRANSPARENT);
	SelectObject(memDC, memBmp);

	memDC.FillSolidRect(m_rcRealClient, RGB(255, 255,255));

	_OnRealPaint(memDC);

	m_nHeight = int((m_rcRealClient.Height() - m_rcClient.Height()) * (m_nPos * 1.0) / (m_rcRealClient.Height()));

	dc.BitBlt(0, 0, m_rcClient.Width(), m_rcClient.Height(), memDC, 0, m_nHeight, SRCCOPY);

	ReleaseDC(memDC);
}
Пример #27
0
BOOL CMsgDlg::OnInitDialog()
{
	CDialog::OnInitDialog();
	CRect rcClient(0, 0, 463, 215);
	CRgn rgn;
	rgn.CreateRoundRectRgn(rcClient.left, rcClient.top, rcClient.right, rcClient.bottom, 5, 5);

	CRect rc = rcClient;
	rc.left = rc.right - 51;
	rc.right = rc.right - 10;
	rc.bottom = rc.top + 24;
	m_btnClose.MoveWindow(&rc);
	m_btnClose.SetImage(TEXT("Skin/Wnd/Msg/x.png"), TEXT("Skin/Wnd/Msg/x_a.png"));

	rc.left = 10; rc.top = 5;
	rc.bottom = rc.top + 24; rc.right = rc.left + 100;
	m_btnTip.MoveWindow(&rc);
	m_btnTip.SetTextStyle(DEFAULT_FONT_NAME, 12, RGB(255, 255, 255), RGB(255, 255, 255),
		RGB(255, 255, 255), RGB(255, 255, 255));

	rc.left = 200; rc.top = 175;
	rc.right = rc.left + 97; rc.bottom = rc.top + 25;
	m_btnOK.SetImage(TEXT("Skin/Wnd/Msg/button01.png"));
	m_btnOK.MoveWindow(&rc);

	m_btnContent.MoveWindow(10, 40, 440, 80);
	m_btnContent.SetWindowText(m_strContent);
	m_btnContent.SetTextStyle(DEFAULT_FONT_NAME, 12, RGB(255, 255, 0), RGB(255, 255, 0),
		RGB(255, 255, 0), RGB(255, 255, 0), CButtonEx::BTEXT_CENTER);

	MoveWindow(&rcClient, FALSE);
	CenterWindow();
	SetWindowRgn(rgn, TRUE);

	return TRUE;
}
Пример #28
0
void CChildFrame::ActivateFrame(int nCmdShow)
{
	// TODO: ここに特定なコードを追加するか、もしくは基本クラスを呼び出してください。
	CMainFrame * pMain = (CMainFrame *)GetMDIFrame( );
	CRect rcClient(pMain->m_OldClientRect);

	//新しい扉が開くとき親扉の空間を全て占める
	switch(pMain->m_iCurrWndCnt){
		case 1:
			this->m_bLeftMost = TRUE;
			break;
	}
	CRect lR;
	if(pMain->m_bSlided){
		lR = pMain->m_leftRect;
	}
	else
		lR = CRect(rcClient.left-1,rcClient.top+21,rcClient.right,rcClient.bottom-68);

	this->SetWindowPos(&CWnd::wndBottom   ,lR.left,lR.top,lR.right,lR.bottom,SWP_NOREDRAW);


	CMDIChildWnd::ActivateFrame(nCmdShow);
}
extern "C" LRESULT CALLBACK ComboBoxListBoxProc(HWND hWnd, UINT nMsg, WPARAM wParam, LPARAM lParam)
{
	switch (nMsg) {
		case WM_RBUTTONDOWN: {
			// If you want to select all/unselect all using the
			// right button, remove this ifdef. Personally, I don't really like it
			#if FALSE
				if (g_pCurComboBox != 0) {
					INT nCount = g_pCurComboBox->GetCount();
					INT nSelCount = 0;

					for (INT i = 0; i < nCount; i++) {
						if (g_pCurComboBox->GetCheck(i))
							nSelCount++;
					}
					g_pCurComboBox->SelectAll(nSelCount != nCount);

                    // Make sure to invalidate this window as well
					InvalidateRect(hWnd, 0, FALSE);
					g_pCurComboBox->GetParent()->SendMessage(WM_COMMAND, MAKELONG(GetWindowLongPtr(g_pCurComboBox->m_hWnd, GWLP_ID), CBN_SELCHANGE), (LPARAM)g_pCurComboBox->m_hWnd);
				}
			#endif
			break;
		}

		// Make the combobox always return -1 as the current selection. This
		// causes the lpDrawItemStruct->itemID in DrawItem() to be -1
		// when the always-visible-portion of the combo is drawn
		case LB_GETCURSEL: {
			return -1;
		}

		case WM_CHAR: {
			if (wParam == VK_SPACE) {
				// Get the current selection
				INT nIndex = CallWindowProc(g_pCheckComboBoxWndProc, hWnd, LB_GETCURSEL, wParam, lParam);

				CRect rcItem;
                rcItem.SetRectEmpty();
				SendMessage(hWnd, LB_GETITEMRECT, nIndex, (LONG_PTR)(VOID *)&rcItem);
				InvalidateRect(hWnd, rcItem, FALSE);

				// Invert the check mark
				g_pCurComboBox->SetCheck(nIndex, !g_pCurComboBox->GetCheck(nIndex));

				// Notify that selection has changed
				g_pCurComboBox->GetParent()->SendMessage(WM_COMMAND, MAKELONG(GetWindowLongPtr(g_pCurComboBox->m_hWnd, GWLP_ID), CBN_SELCHANGE), (LPARAM)g_pCurComboBox->m_hWnd);
				return 0;
			}
			break;
		}

		case WM_LBUTTONDOWN: {
			CRect rcClient(0, 0, 0, 0);
			GetClientRect(hWnd, rcClient);

			CPoint pt;
			pt.x = LOWORD(lParam);
			pt.y = HIWORD(lParam);

			if (PtInRect(rcClient, pt)) {
				INT nItemHeight = SendMessage(hWnd, LB_GETITEMHEIGHT, 0, 0);
				INT nTopIndex   = SendMessage(hWnd, LB_GETTOPINDEX, 0, 0);

				// Compute which index to check/uncheck
				INT nIndex = nTopIndex + pt.y / nItemHeight;

				CRect rcItem(0, 0, 0, 0);
				SendMessage(hWnd, LB_GETITEMRECT, nIndex, (LONG_PTR)(VOID *)&rcItem);

				if (PtInRect(rcItem, pt)) {
					// Invalidate this window
					InvalidateRect(hWnd, rcItem, FALSE);
					g_pCurComboBox->SetCheck(nIndex, !g_pCurComboBox->GetCheck(nIndex));

					// Notify that selection has changed
					g_pCurComboBox->GetParent()->SendMessage(WM_COMMAND, MAKELONG(GetWindowLongPtr(g_pCurComboBox->m_hWnd, GWLP_ID), CBN_SELCHANGE), (LPARAM)g_pCurComboBox->m_hWnd);
				}
			}

			// Do the default handling now (such as close the popup
			// window when clicked outside)
			break;
		}

		case WM_LBUTTONUP: {
			// Don't do anything here. This causes the combobox popup
			// windows to remain open after a selection has been made
			return 0;
		}
	}

	return CallWindowProc(g_pCheckComboBoxWndProc, hWnd, nMsg, wParam, lParam);
}
void CXTPShortcutBarPane::RecalcLayout()
{
	if (!m_hWnd)
		return;

	CXTPClientRect rc(this);

	CXTPShortcutBarPaintManager* pPaintManager = m_pShortcutBar->GetPaintManager();
	ASSERT(pPaintManager);
	if (!pPaintManager)
		return;

	int nPaneCaptionHeight = m_bShowCaption ? pPaintManager->DrawPaneCaption(NULL, this, FALSE) : 0;
	int nItemCaptionHeight = pPaintManager->DrawPaneItemCaption(NULL, NULL, FALSE);

	int nTop = nPaneCaptionHeight;

	for (int i = 0; i < m_arrItems.GetSize(); i++)
	{
		CXTPShortcutBarPaneItem* pItem = m_arrItems[i];

		int nClientTop = nTop + (pItem->m_bShowCaption ? nItemCaptionHeight : 0);
		pItem->m_rcCaption.SetRect(0, nTop, rc.right, nClientTop);

		if (pItem->IsExpanded())
		{
			CRect rcClient(0 + m_rcIndent.left, m_rcIndent.top + nClientTop, rc.right - m_rcIndent.right, m_rcIndent.top + nClientTop + pItem->m_nHeight);
			if (rcClient.bottom > rc.bottom) rcClient.bottom = rc.bottom;
			if (i == m_arrItems.GetSize() - 1) rcClient.bottom = rc.bottom;

			pItem->m_rcClient = rcClient;

			nTop = nClientTop + pItem->m_nHeight + m_rcIndent.top + m_rcIndent.bottom;
			if (pItem->m_pWndClient)
			{
				pItem->m_pWndClient->SetWindowPos(0, rcClient.left, rcClient.top, rcClient.Width(), rcClient.Height(),
					SWP_NOZORDER | SWP_SHOWWINDOW);
			}
		}
		else
		{
			pItem->m_rcClient.SetRectEmpty();
			nTop = nClientTop;

			if (pItem->m_pWndClient)
			{
				pItem->m_pWndClient->SetWindowPos(0, 0, 0, 0, 0, SWP_NOMOVE | SWP_NOSIZE | SWP_NOZORDER | SWP_HIDEWINDOW);
			}
		}
	}

	m_rcMinimizeButton.SetRectEmpty();

	if (m_pShortcutBar->IsMinimizeButtonVisible() && (nPaneCaptionHeight > 0 || m_bFlatStyle))
	{

		CSize sz(18, 18);
		m_rcMinimizeButton = CRect(CPoint(rc.right - sz.cx - 4, max(0, (nPaneCaptionHeight - sz.cy) / 2)), sz);
	}
	m_bMinimizeButtonHighlighted = FALSE;

	Invalidate(FALSE);
}