void CEzShortcutDlg::OnPaint() { if (IsIconic()) { CPaintDC dc(this); // 그리기를 위한 디바이스 컨텍스트 SendMessage(WM_ICONERASEBKGND, reinterpret_cast<WPARAM>(dc.GetSafeHdc()), 0); // 클라이언트 사각형에서 아이콘을 가운데에 맞춥니다. int cxIcon = GetSystemMetrics(SM_CXICON); int cyIcon = GetSystemMetrics(SM_CYICON); CRect rect; GetClientRect(&rect); int x = (rect.Width() - cxIcon + 1) / 2; int y = (rect.Height() - cyIcon + 1) / 2; // 아이콘을 그립니다. dc.DrawIcon(x, y, m_hIcon); OnDrawIcon(); } else { CDialog::OnPaint(); OnDrawIcon(); } }
//----------------------------------------------------------------------------- // Purpose: //----------------------------------------------------------------------------- void CIconComboBox::DrawItem( LPDRAWITEMSTRUCT lpDrawItemStruct ) { CBrush *pOldBrush = NULL; CPen *pOldPen = NULL; // // the icon is "disabled" // if( !IsWindowEnabled() ) { SetDisabledBrushAndPen( lpDrawItemStruct, &pOldBrush, &pOldPen ); OnDrawIcon( lpDrawItemStruct ); ResetBrushAndPen( lpDrawItemStruct, pOldBrush, pOldPen ); return; } // // the icon is "selected" // if( ( lpDrawItemStruct->itemState & ODS_SELECTED ) && ( lpDrawItemStruct->itemAction & ( ODA_SELECT | ODA_DRAWENTIRE ) ) ) { SetSelectedBrushAndPen( lpDrawItemStruct, &pOldBrush, &pOldPen ); OnDrawIcon( lpDrawItemStruct ); ResetBrushAndPen( lpDrawItemStruct, pOldBrush, pOldPen ); } // // the icon is "un-selected" // if( !( lpDrawItemStruct->itemState & ODS_SELECTED ) && ( lpDrawItemStruct->itemAction & ( ODA_SELECT | ODA_DRAWENTIRE ) ) ) { SetUnSelectedBrushAndPen( lpDrawItemStruct, &pOldBrush, &pOldPen ); OnDrawIcon( lpDrawItemStruct ); ResetBrushAndPen( lpDrawItemStruct, pOldBrush, pOldPen ); } // // icon gains focus // if( lpDrawItemStruct->itemAction & ODA_FOCUS ) { // get the device context CDC* pDC = CDC::FromHandle( lpDrawItemStruct->hDC ); // render the focus rectangle pDC->DrawFocusRect( &lpDrawItemStruct->rcItem ); } }
void CBCGPToolTipCtrl::OnPaint() { if (m_Params.m_bBallonTooltip) { CToolTipCtrl::OnPaint (); return; } CPaintDC dcPaint(this); // device context for painting CBCGPMemDC memDC (dcPaint, this); CDC* pDC = &memDC.GetDC (); CRect rect; GetClientRect (rect); CRect rectMargin; GetMargin (rectMargin); CRect rectText = rect; rectText.DeflateRect (rectMargin); rectText.DeflateRect (m_ptMargin.x, m_ptMargin.y); COLORREF clrLine = m_Params.m_clrBorder == (COLORREF)-1 ? ::GetSysColor (COLOR_INFOTEXT) : m_Params.m_clrBorder; COLORREF clrText = m_Params.m_clrText == (COLORREF)-1 ? ::GetSysColor (COLOR_INFOTEXT) : m_Params.m_clrText; //----------------- // Fill background: //----------------- OnFillBackground (pDC, rect, clrText, clrLine); CPen penLine (PS_SOLID, 1, clrLine); CPen* pOldPen = pDC->SelectObject (&penLine); //------------- // Draw border: //------------- OnDrawBorder (pDC, rect, clrLine); //----------- // Draw icon: //----------- if (m_sizeImage != CSize (0, 0) && m_Params.m_bDrawIcon) { CRect rectImage = rectText; rectImage.right = rectImage.left + m_sizeImage.cx; rectImage.bottom = rectImage.top + m_sizeImage.cy; OnDrawIcon (pDC, rectImage); rectText.left += m_sizeImage.cx + m_ptMargin.x; } pDC->SetBkMode (TRANSPARENT); pDC->SetTextColor (clrText); //------------ // Draw label: //------------ int nTextHeight = OnDrawLabel (pDC, rectText, FALSE).cy; //------------------------------ // Draw separator + description: //------------------------------ if (!m_strDescription.IsEmpty () && m_Params.m_bDrawDescription) { CRect rectDescr = rectText; rectDescr.top += nTextHeight + 3 * m_ptMargin.y / 2; if (m_Params.m_bDrawSeparator) { OnDrawSeparator (pDC, rectDescr.left, rectDescr.right, rectDescr.top - m_ptMargin.y / 2); } OnDrawDescription (pDC, rectDescr, FALSE); } pDC->SelectObject (pOldPen); }
void CListBoxST::DrawItem(LPDRAWITEMSTRUCT pDIStruct) { CDC* pDC = CDC::FromHandle(pDIStruct->hDC); BOOL bIsSelected = FALSE; BOOL bIsFocused = FALSE; BOOL bIsDisabled = FALSE; COLORREF crNormal = GetSysColor(COLOR_WINDOW); COLORREF crSelected = GetSysColor(COLOR_HIGHLIGHT); COLORREF crText = GetSysColor(COLOR_WINDOWTEXT); COLORREF crColor = RGB(0, 0, 0); CString sText; // List box item text STRUCT_LBDATA* lpLBData = NULL; lpLBData = (STRUCT_LBDATA*)CListBox::GetItemDataPtr(pDIStruct->itemID); if (lpLBData == NULL || lpLBData == (LPVOID)-1L) return; bIsSelected = (pDIStruct->itemState & ODS_SELECTED); bIsFocused = (pDIStruct->itemState & ODS_FOCUS); bIsDisabled = ((pDIStruct->itemState & ODS_DISABLED) || ((lpLBData->dwFlags & TEST_BIT0) == TEST_BIT0)); CRect rcItem = pDIStruct->rcItem; CRect rcIcon = pDIStruct->rcItem; CRect rcText = pDIStruct->rcItem; CRect rcCenteredText = pDIStruct->rcItem; pDC->SetBkMode(TRANSPARENT); // ONLY FOR DEBUG //CBrush brBtnShadow(RGB(255, 0, 0)); //pDC->FrameRect(&rcItem, &brBtnShadow); // Calculate rcIcon if (m_pImageList) { rcIcon.right = rcIcon.left + m_szImage.cx + CX_BORDER*2; rcIcon.bottom = rcIcon.top + m_szImage.cy + CY_BORDER*2; } // if else rcIcon.SetRect(0, 0, 0, 0); // Calculate rcText rcText.left = rcIcon.right; // Calculate rcCenteredText // Get list box item text CListBox::GetText(pDIStruct->itemID, sText); rcCenteredText = rcText; pDC->DrawText(sText, -1, rcCenteredText, DT_WORDBREAK | DT_EXPANDTABS| DT_CALCRECT | lpLBData->nFormat); rcCenteredText.OffsetRect(0, (rcText.Height() - rcCenteredText.Height())/2); // Draw rcIcon background if (m_pImageList) { if (bIsSelected && (m_byRowSelect == ST_FULLROWSELECT) && !bIsDisabled) crColor = crSelected; else crColor = crNormal; OnDrawIconBackground(pDIStruct->itemID, pDC, &rcItem, &rcIcon, bIsDisabled, bIsSelected, crColor); } // if // Draw rcText/rcCenteredText background if (bIsDisabled) { pDC->SetTextColor(GetSysColor(COLOR_GRAYTEXT)); crColor = crNormal; } // if else { if (bIsSelected) { pDC->SetTextColor(0x00FFFFFF & ~crText); crColor = crSelected; } // if else { pDC->SetTextColor(crText); crColor = crNormal; } // else } // else if (m_byRowSelect == ST_TEXTSELECT) //pDC->FillSolidRect(&rcCenteredText, crColor); OnDrawTextBackground(pDIStruct->itemID, pDC, &rcItem, &rcCenteredText, bIsDisabled, bIsSelected, crColor); else //pDC->FillSolidRect(&rcText, crColor); OnDrawTextBackground(pDIStruct->itemID, pDC, &rcItem, &rcText, bIsDisabled, bIsSelected, crColor); // Draw the icon (if any) if (m_pImageList) OnDrawIcon(pDIStruct->itemID, pDC, &rcItem, &rcIcon, lpLBData->nImage, bIsDisabled, bIsSelected); // Draw text pDC->DrawText(sText, -1, rcCenteredText, DT_WORDBREAK | DT_EXPANDTABS | lpLBData->nFormat); // Draw focus rectangle if (bIsFocused && !bIsDisabled) { switch (m_byRowSelect) { case ST_FULLROWSELECT: pDC->DrawFocusRect(&rcItem); break; case ST_FULLTEXTSELECT: pDC->DrawFocusRect(&rcText); break; case ST_TEXTSELECT: default: pDC->DrawFocusRect(&rcCenteredText); break; } // switch } // if } // End of DrawItem