本文整理汇总了C++中CDC::DrawIcon方法的典型用法代码示例。如果您正苦于以下问题:C++ CDC::DrawIcon方法的具体用法?C++ CDC::DrawIcon怎么用?C++ CDC::DrawIcon使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类CDC
的用法示例。
在下文中一共展示了CDC::DrawIcon方法的13个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: DrawItem
void CButtonStyle::DrawItem(LPDRAWITEMSTRUCT lpDIS)
{
CDC *pDC = CDC::FromHandle(lpDIS->hDC);
CString sCaption;
CRect rect=lpDIS->rcItem;
GetWindowText(sCaption);
pDC->SetBkMode(TRANSPARENT);
CFont *oldFont = pDC->SelectObject(&m_Font);
m_Selected = (lpDIS->itemState & ODS_SELECTED);
if((!m_bTab) || (GetDlgCtrlID()!=m_IDSelected))
{
if(nState==1){
if(m_hHdc!=NULL)
PaintBG(pDC,1);
pDC->DrawIcon(0,3,m_hIcon1);
pDC->SetTextColor(m_TextColorDark);
pDC->DrawText(sCaption, rect, DT_SINGLELINE|DT_CENTER|DT_VCENTER);
}
else if(nState==3){
if(m_hHdc!=NULL)
PaintBG(pDC,3);
if(m_Selected)
{
pDC->DrawIcon(1,4,m_hIcon2);
pDC->SetTextColor(m_TextColorLight);
pDC->DrawText(sCaption, rect, DT_SINGLELINE|DT_CENTER|DT_VCENTER);
}
else
{
pDC->DrawIcon(0,3,m_hIcon2);
pDC->SetTextColor(m_TextColorLight);
pDC->DrawText(sCaption, rect, DT_SINGLELINE|DT_CENTER|DT_VCENTER);
}
}else if(nState==2){
if(m_hHdc!=NULL)
PaintBG(pDC,2);
pDC->DrawIcon(0,3,m_hIcon2);
pDC->SetTextColor(m_TextColorLight);
pDC->DrawText(sCaption, rect, DT_SINGLELINE|DT_CENTER|DT_VCENTER);
}
}else
{
if(m_hHdc!=NULL)
PaintBG(pDC,1);
pDC->DrawIcon(0,3,m_hIcon2);
pDC->SetTextColor(m_TextColorLight);
pDC->DrawText(sCaption, rect, DT_SINGLELINE|DT_CENTER|DT_VCENTER);
}
pDC->SelectObject(oldFont);
}
示例2: DrawItem
void CPatchPaletteButton::DrawItem(LPDRAWITEMSTRUCT lpDrawItemStruct)
{
CDC *pDC = GetDC();
CMainFrame* pMainFrame = STATIC_DOWNCAST(CMainFrame, AfxGetMainWnd());
CModelerView *pModelerView = CModelerView::GetActiveMappingNormalView();
if( pModelerView == NULL)
{
pDC->FillSolidRect( &lpDrawItemStruct->rcItem, 0x00aaaaaa);
pDC->DrawEdge( &lpDrawItemStruct->rcItem, EDGE_RAISED, BF_RECT);
}
else
{
INDEX iButtonNo = lpDrawItemStruct->CtlID - IDC_PATCH_BUTTON_BASE;
ULONG ulCurrentMask = pModelerView->m_ModelObject.GetPatchesMask();
CModelerDoc* pDoc = pModelerView->GetDocument();
ULONG ulExistingMask = pDoc->m_emEditModel.GetExistingPatchesMask();
pDC->FillSolidRect( &lpDrawItemStruct->rcItem, 0x00aaaaaa);
// If this patch doesn't exist
if( (ulExistingMask & (1UL << iButtonNo)) == 0)
{
pDC->DrawEdge( &lpDrawItemStruct->rcItem, EDGE_RAISED, BF_RECT);
}
// If this patch exists but it is not turned on
else if( (ulCurrentMask & (1UL << iButtonNo)) == 0)
{
// If this is active patch
if( iButtonNo == pModelerView->m_iActivePatchBitIndex)
pDC->DrawIcon( 2, 2, pMainFrame->m_dlgPatchesPalette->m_PatchActiveIcon);
else
pDC->DrawIcon( 2, 2, pMainFrame->m_dlgPatchesPalette->m_PatchExistIcon);
pDC->DrawEdge( &lpDrawItemStruct->rcItem, EDGE_RAISED, BF_RECT);
}
// If this patch is turned on and it is active patch
else if( iButtonNo == pModelerView->m_iActivePatchBitIndex)
{
pDC->DrawIcon( 2, 2, pMainFrame->m_dlgPatchesPalette->m_PatchActiveIcon);
pDC->DrawEdge( &lpDrawItemStruct->rcItem, EDGE_SUNKEN, BF_RECT);
}
// If this patch is turned on and it is not active patch
else
{
pDC->DrawIcon( 2 ,2, pMainFrame->m_dlgPatchesPalette->m_PatchInactiveIcon);
pDC->DrawEdge( &lpDrawItemStruct->rcItem, EDGE_SUNKEN, BF_RECT);
}
}
ReleaseDC( pDC);
}
示例3: OnDrawIcon
//-----------------------------------------------------------------------------
//-----------------------------------------------------------------------------
void CIconComboBox::OnDrawIcon( LPDRAWITEMSTRUCT lpDrawItemStruct )
{
// any items to draw?
if( GetCount() == 0 )
return;
// get the device context - to draw
CDC* pDC = CDC::FromHandle( lpDrawItemStruct->hDC );
// get the current icon to render
HICON hIcon = ( HICON )lpDrawItemStruct->itemData;
if( !hIcon )
return;
// calculate the icon's upper left corner
int UpperLeftX = lpDrawItemStruct->rcItem.left +
( ( lpDrawItemStruct->rcItem.right - lpDrawItemStruct->rcItem.left ) / 2 ) -
( m_IconSize.cx / 2 );
int UpperLeftY = lpDrawItemStruct->rcItem.top +
( ( lpDrawItemStruct->rcItem.bottom - lpDrawItemStruct->rcItem.top ) / 2 ) -
( m_IconSize.cy / 2 );
// render the icon
pDC->DrawIcon( UpperLeftX, UpperLeftY, hIcon );
}
示例4: DrawItem
void CBigIcon::DrawItem(LPDRAWITEMSTRUCT lpDrawItemStruct)
{
CDC* pDC = CDC::FromHandle(lpDrawItemStruct->hDC);
ASSERT(pDC != NULL);
CRect rect;
GetClientRect(rect);
int cxClient = rect.Width();
int cyClient = rect.Height();
// load icon
HICON hicon = AfxGetApp()->LoadIcon(ID_SYM_ICON_GDB);
if (hicon == NULL)
return;
// draw icon into off-screen bitmap
int cxIcon = ::GetSystemMetrics(SM_CXICON);
int cyIcon = ::GetSystemMetrics(SM_CYICON);
CBitmap bitmap;
if (!bitmap.CreateCompatibleBitmap(pDC, cxIcon, cyIcon))
return;
CDC dcMem;
if (!dcMem.CreateCompatibleDC(pDC))
return;
CBitmap* pBitmapOld = dcMem.SelectObject(&bitmap);
if (pBitmapOld == NULL)
return;
// blt the bits already on the window onto the off-screen bitmap
dcMem.StretchBlt(0, 0, cxIcon, cyIcon, pDC,
2, 2, cxClient-CX_SHADOW-4, cyClient-CY_SHADOW-4, SRCCOPY);
// draw the icon on the background
dcMem.DrawIcon(0, 0, hicon);
// draw border around icon
CPen pen;
pen.CreateStockObject(BLACK_PEN);
CPen* pPenOld = pDC->SelectObject(&pen);
pDC->Rectangle(0, 0, cxClient-CX_SHADOW, cyClient-CY_SHADOW);
if (pPenOld)
pDC->SelectObject(pPenOld);
// draw shadows around icon
CBrush br;
br.CreateStockObject(DKGRAY_BRUSH);
rect.SetRect(cxClient-CX_SHADOW, CY_SHADOW, cxClient, cyClient);
pDC->FillRect(rect, &br);
rect.SetRect(CX_SHADOW, cyClient-CY_SHADOW, cxClient, cyClient);
pDC->FillRect(rect, &br);
// draw the icon contents
pDC->StretchBlt(2, 2, cxClient-CX_SHADOW-4, cyClient-CY_SHADOW-4,
&dcMem, 0, 0, cxIcon, cyIcon, SRCCOPY);
}
示例5: OnPaint
void CRMessageBox::OnPaint()
{
if (!IsWindowVisible() || IsIconic())
{
CDialog::OnPaint();
return;
}
// 绘制窗口
CRDialog::OnPaint();
// 显示图标
HICON hIcon;
CRect rcIcon;
POINT point;
m_stcIcon.GetWindowRect(&rcIcon);
ScreenToClient(&rcIcon);
point.x = rcIcon.left;
point.y = rcIcon.top;
// 根据消息框类型加载不同的图标
switch (m_iType & 0xF0)
{
case MB_ICONHAND: // MB_ICONERROR/MB_ICONSTOP
hIcon = LoadIcon(NULL, MAKEINTRESOURCE(IDI_HAND));
break;
case MB_ICONQUESTION:
hIcon = LoadIcon(NULL, MAKEINTRESOURCE(IDI_QUESTION));
break;
case MB_ICONEXCLAMATION: // MB_ICONWARNING
hIcon = LoadIcon(NULL, MAKEINTRESOURCE(IDI_WARNING));
break;
case MB_ICONINFORMATION: // MB_ICONASTERISK
hIcon = LoadIcon(NULL, MAKEINTRESOURCE(IDI_INFORMATION));
break;
case MB_USERICON:
default:
hIcon = LoadIcon(NULL, MAKEINTRESOURCE(IDI_INFORMATION));
break;
}
// 画图标
CDC *pDC = GetDC();
pDC->DrawIcon(point, hIcon);
ReleaseDC(pDC);
}
示例6: OnPaint
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);
}
示例7: ConvertIconToBitmap
HBITMAP ConvertIconToBitmap(HICON hIcon)
{
CBitmap bmpIcon;
CDC dcBmp;
if (dcBmp.CreateCompatibleDC(NULL)) // create memory DC
{
if (bmpIcon.CreateCompatibleBitmap(&dcBmp, 16, 16))// 16x16 icon
{
CBitmap *poldBmp = dcBmp.SelectObject(&bmpIcon);
dcBmp.DrawIcon(0, 0, hIcon); // Draw icon (hIcon should be loaded already)
dcBmp.SelectObject(poldBmp); // Restore DC
}
}
return (HBITMAP)bmpIcon;
}
示例8: OnDrawItem
void CDMPlaceListPage::OnDrawItem(int nIDCtl, LPDRAWITEMSTRUCT lpDrawItemStruct)
{
HICON hIco;
switch(nIDCtl)
{
case IDC_ADD:
hIco = (HICON)LoadImage(AfxGetInstanceHandle(), MAKEINTRESOURCE(IDI_ADD), IMAGE_ICON, 16, 16, 0);
break;
case IDC_DELETE:
hIco = (HICON)LoadImage(AfxGetInstanceHandle(), MAKEINTRESOURCE(IDI_DEL), IMAGE_ICON, 16, 16, 0);
break;
case IDC_NEW:
hIco = (HICON)LoadImage(AfxGetInstanceHandle(), MAKEINTRESOURCE(IDI_NEW), IMAGE_ICON, 16, 16, 0);
break;
default:
CPropertyPage::OnDrawItem(nIDCtl, lpDrawItemStruct);
return;
}
CDC dc;
dc.Attach(lpDrawItemStruct->hDC);
if((lpDrawItemStruct->itemAction&ODA_SELECT) && (lpDrawItemStruct->itemState&ODS_SELECTED))
{
CBrush br(RGB(0,0,0));
dc.FillSolidRect(&lpDrawItemStruct->rcItem, RGB(255,255,255));
dc.FrameRect(&lpDrawItemStruct->rcItem, &br);
}
else
{
dc.FillSolidRect(&lpDrawItemStruct->rcItem, GetSysColor(COLOR_BTNFACE));
}
dc.DrawIcon(2, 2, hIco);
dc.Detach();
}
示例9: dc
void CLab08View::OnDraw(CDC* _pDC)
{
CLab08Doc* pDoc = GetDocument();
ASSERT_VALID(pDoc);
if (!pDoc) return;
CRect size;
_pDC->GetWindow()->GetClientRect(&size);
// Супер костыли
CMemDC dc(*_pDC, _pDC->GetWindow());
CDC * pDC = &dc.GetDC();
// Крутая штука, почему я раньше её не юзал
// Чистим фон
CBrush bgBrush(_pDC->GetBkColor());
pDC->FillRect(size, &bgBrush);
if (size.Width() < 150 || size.Height() < 150 ) {
LONG x = size.left + (size.right - size.left) / 2;
LONG y = size.top + (size.bottom - size.top) / 2;
HICON m_hIcon = AfxGetApp()->LoadIcon(IDR_MAINFRAME);
pDC->DrawIcon(x - 16, y - 16, m_hIcon);
return;
}
auto & props = pDoc->properties;
auto & funcs = pDoc->properties.functions;
// Начало координат в пикселях. Может не попадать в область видимости
LONG center_x = t_dim_to_pixel_x(size, 0.0);
LONG center_y = t_dim_to_pixel_y(size, 0.0);
pDC->SetBkMode(TRANSPARENT);
// Рисуем вспомогательную сетку
CPen penGird(PS_DOT, 1, COLORREF(0x7f7f7f));
pDC->SelectObject(&penGird);
pDC->SetTextColor(COLORREF(0x7f7f7f));
double gird_lx = ceil(t_pixel_to_dim_x(size, size.left) / props.x_grid) * props.x_grid;
double gird_rx = floor(t_pixel_to_dim_x(size, size.right) / props.x_grid) * props.x_grid;
for(double i = gird_lx; i <= gird_rx; i += props.x_grid) {
LONG ix = t_dim_to_pixel_x(size, i);
if ( ix != center_x && size.left + 1 < ix && ix < size.right - 1) {
pDC->MoveTo(ix, size.bottom - 5); pDC->LineTo(ix, size.top + 5);
}
}
double gird_ly = ceil(t_pixel_to_dim_y(size, size.bottom) / props.y_grid) * props.y_grid;
double gird_ry = floor(t_pixel_to_dim_y(size, size.top) / props.y_grid) * props.y_grid;
for(double i = gird_ly; i <= gird_ry; i += props.y_grid) {
LONG iy = t_dim_to_pixel_y(size, i);
if ( iy != center_y && size.top + 1 < iy && iy < size.bottom - 1) {
pDC->MoveTo(size.left + 5, iy); pDC->LineTo(size.right - 5, iy);
}
}
// Рисуем оси, если это имеет смысл
CPen penAxis(PS_SOLID, 2, COLORREF(0x000000));
pDC->SelectObject(&penAxis);
pDC->SetTextColor(0);
if ( size.left <= center_x && center_x <= size.right ) {
pDC->MoveTo(center_x, size.bottom - 5); pDC->LineTo(center_x, size.top + 5);
// стрелочка
pDC->MoveTo(center_x - 5, size.top + 10);
pDC->LineTo(center_x, size.top + 5);
pDC->LineTo(center_x + 5, size.top + 10);
// Буковка
pDC->TextOut(center_x + 5, size.top + 10, _T("Y"));
}
if ( size.top <= center_y && center_y <= size.bottom ) {
pDC->MoveTo(size.left + 5, center_y); pDC->LineTo(size.right - 5, center_y);
// стрелочка
pDC->MoveTo(size.right - 10, center_y - 5);
pDC->LineTo(size.right - 5, center_y);
pDC->LineTo(size.right - 10, center_y + 5);
// Буковка
pDC->TextOut(size.right - 15, center_y + 5, _T("X"));
}
if ( size.left <= center_x && center_x <= size.right &&
size.top <= center_y && center_y <= size.bottom ) {
pDC->TextOut(center_x + 1, center_y + 1, _T("(0;0)"));
}
// координаты в углах
{
CString tmp;
tmp.Format(_T("(%g;%g)"), gird_lx, gird_ly);
drawPoint(pDC, size, t_dim_to_pixel_x(size, gird_lx),
t_dim_to_pixel_y(size, gird_ly), tmp);
tmp.Format(_T("(%g;%g)"), gird_lx, gird_ry);
drawPoint(pDC, size, t_dim_to_pixel_x(size, gird_lx),
t_dim_to_pixel_y(size, gird_ry), tmp);
tmp.Format(_T("(%g;%g)"), gird_rx, gird_ly);
drawPoint(pDC, size, t_dim_to_pixel_x(size, gird_rx),
t_dim_to_pixel_y(size, gird_ly), tmp);
tmp.Format(_T("(%g;%g)"), gird_rx, gird_ry);
drawPoint(pDC, size, t_dim_to_pixel_x(size, gird_rx),
t_dim_to_pixel_y(size, gird_ry), tmp);
}
//.........这里部分代码省略.........
示例10: DrawItem
void CPrimitiveHistoryCombo::DrawItem(LPDRAWITEMSTRUCT lpDrawItemStruct)
{
INDEX iItem = lpDrawItemStruct->itemID;
BOOL bSelected = lpDrawItemStruct->itemState & (ODS_FOCUS|ODS_SELECTED);
COLORREF clrfBcgColor;
UINT ulEdgeType;
if( bSelected)
{
clrfBcgColor = CLRF_CLR( 0xDFDFFF00UL);
ulEdgeType = EDGE_SUNKEN;
}
else
{
clrfBcgColor = CLRF_CLR( C_WHITE);
ulEdgeType = EDGE_RAISED;
}
CValuesForPrimitive *pVFP = (CValuesForPrimitive *) GetItemData( iItem);
if( (ULONG) pVFP == CB_ERR) return;
CDC *pDC = CDC::FromHandle( lpDrawItemStruct->hDC);
RECT rectItem = lpDrawItemStruct->rcItem;
pDC->SetBkMode( TRANSPARENT);
pDC->SetBkColor( clrfBcgColor);
pDC->FillSolidRect( &rectItem, clrfBcgColor);
// polygon color
RECT rectPolygon = rectItem;
rectPolygon.top+=1;
rectPolygon.bottom-=1;
rectPolygon.left += 2;
rectPolygon.right = rectPolygon.left+16;
COLORREF clrfColor = CLRF_CLR( pVFP->vfp_colPolygonsColor);
pDC->FillSolidRect( &rectPolygon, clrfColor);
// sector color
RECT rectSector = rectPolygon;
rectSector.left += 16;
rectSector.right += 16;
clrfColor = CLRF_CLR( pVFP->vfp_colSectorsColor);
pDC->FillSolidRect( &rectSector, clrfColor);
RECT rectBorder = rectPolygon;
rectBorder.right += 16;
pDC->DrawEdge( &rectBorder, ulEdgeType, BF_RECT);
// used for rendering from left to right
PIX pixCursor = 38;
UINT uiPrimitiveIconID;
switch( pVFP->vfp_ptPrimitiveType)
{
case PT_CONUS:{ uiPrimitiveIconID = IDR_ICON_CONUS; break;}
case PT_TORUS:{ uiPrimitiveIconID = IDR_ICON_TORUS; break;}
case PT_STAIRCASES:
{
if( pVFP->vfp_bLinearStaircases) uiPrimitiveIconID = IDR_ICON_LINEAR_STAIRCASES;
else uiPrimitiveIconID = IDR_ICON_SPIRAL_STAIRCASES;
break;
}
case PT_SPHERE:{ uiPrimitiveIconID = IDR_ICON_SPHERE; break;}
case PT_TERRAIN:{ uiPrimitiveIconID = IDR_ICON_TERRAIN; break;}
}
HICON hPrimitiveIcon = theApp.LoadIcon( uiPrimitiveIconID);
pDC->DrawIcon( pixCursor, rectItem.top, hPrimitiveIcon);
pixCursor += 22;
UINT uiPrimitiveOperationID;
switch( pVFP->vfp_csgtCSGOperation)
{
case CSG_ADD: { uiPrimitiveOperationID = IDR_ICON_ADD; break;}
case CSG_ADD_REVERSE: { uiPrimitiveOperationID = IDR_ICON_ADD_REVERSE; break;}
case CSG_REMOVE: { uiPrimitiveOperationID = IDR_ICON_REMOVE; break;}
case CSG_REMOVE_REVERSE: { uiPrimitiveOperationID = IDR_ICON_REMOVE_REVERSE; break;}
case CSG_SPLIT_SECTORS: { uiPrimitiveOperationID = IDR_ICON_SPLIT_SECTORS; break;}
case CSG_SPLIT_POLYGONS: { uiPrimitiveOperationID = IDR_ICON_SPLIT_POLYGONS; break;}
case CSG_JOIN_LAYERS: { uiPrimitiveOperationID = IDR_ICON_JOIN_LAYERS; break;}
}
HICON hOperationIcon = theApp.LoadIcon( uiPrimitiveOperationID);
pDC->DrawIcon( pixCursor, rectItem.top, hOperationIcon);
pixCursor += 22;
HICON hRoomIcon;
if( pVFP->vfp_bClosed) hRoomIcon = theApp.LoadIcon( IDR_ICON_ROOM);
else hRoomIcon = theApp.LoadIcon( IDR_ICON_MATERIAL);
pDC->DrawIcon( pixCursor, rectItem.top, hRoomIcon);
pixCursor += 22;
if( !pVFP->vfp_bOuter &&
(pVFP->vfp_csgtCSGOperation != PT_SPHERE) &&
(pVFP->vfp_csgtCSGOperation != PT_TERRAIN) )
{
HICON hOuterIcon;
hOuterIcon = theApp.LoadIcon( IDR_ICON_INNER);
pDC->DrawIcon( pixCursor, rectItem.top, hOuterIcon);
pixCursor += 22;
}
if( pVFP->vfp_ptPrimitiveType == PT_STAIRCASES)
{
//.........这里部分代码省略.........
示例11: OnDraw
void CinvadersView::OnDraw(CDC* pDC)
{
CinvadersDoc* pDoc = GetDocument();
ASSERT_VALID(pDoc);
if (!pDoc)
return;
// TODO: add draw code for native data here
//drawbackground
CBitmap bitmap;
CDC dcMemory;
if(pDoc->sp.level==1){
bitmap.LoadBitmapW(IDB_BITMAP1);}
if(pDoc->sp.level==2){
bitmap.LoadBitmapW(IDB_BITMAP2);}
if(pDoc->sp.level==3){
bitmap.LoadBitmapW(IDB_BITMAP3);}
if(pDoc->sp.level==4){
bitmap.LoadBitmapW(IDB_BITMAP4);}
if(pDoc->sp.level==5){
bitmap.LoadBitmapW(IDB_BITMAP5);}
dcMemory.CreateCompatibleDC(pDC);
dcMemory.SelectObject(bitmap);
HICON player;
HICON alien1;
HICON alien2;
HICON alien3;
HICON alien4;
HICON pRocket;
HICON aRocket;
HICON explo;
player=LoadIcon(AfxGetResourceHandle(),MAKEINTRESOURCE(IDI_ICON1));
alien1=LoadIcon(AfxGetResourceHandle(),MAKEINTRESOURCE(IDI_ICON2));
alien2=LoadIcon(AfxGetResourceHandle(),MAKEINTRESOURCE(IDI_ICON3));
alien3=LoadIcon(AfxGetResourceHandle(),MAKEINTRESOURCE(IDI_ICON4));
alien4=LoadIcon(AfxGetResourceHandle(),MAKEINTRESOURCE(IDI_ICON5));
pRocket=LoadIcon(AfxGetResourceHandle(),MAKEINTRESOURCE(IDI_ICON6));
aRocket=LoadIcon(AfxGetResourceHandle(),MAKEINTRESOURCE(IDI_ICON6));
explo=LoadIcon(AfxGetResourceHandle(),MAKEINTRESOURCE(IDI_ICON7));
//draw player
dcMemory.DrawIcon(pDoc->sp.player.left,pDoc->sp.player.top,player);
//draw rocket
if(pDoc->sp.pRock==true)dcMemory.DrawIcon(pDoc->sp.pRocket.left,pDoc->sp.pRocket.top,pRocket);
if(pDoc->sp.aRock==true)dcMemory.DrawIcon(pDoc->sp.aRocket.left,pDoc->sp.aRocket.top,aRocket);
if(pDoc->sp.exploa==true)dcMemory.DrawIcon(pDoc->sp.pRocket.left,pDoc->sp.pRocket.top,explo);pDoc->sp.exploa=false;
if(pDoc->sp.explop==true)dcMemory.DrawIcon(pDoc->sp.player.left,pDoc->sp.player.top,explo);pDoc->sp.explop=false;
//draw invaders
for(int i=0;i<pDoc->sp.aliens.size();i++){
if(pDoc->sp.aliens.at(i).i==0){
dcMemory.DrawIcon(pDoc->sp.aliens.at(i).r.left,pDoc->sp.aliens.at(i).r.top,alien4);}
if(pDoc->sp.aliens.at(i).i==1){
dcMemory.DrawIcon(pDoc->sp.aliens.at(i).r.left,pDoc->sp.aliens.at(i).r.top,alien3);}
if(pDoc->sp.aliens.at(i).i==2){
dcMemory.DrawIcon(pDoc->sp.aliens.at(i).r.left,pDoc->sp.aliens.at(i).r.top,alien2);}
if(pDoc->sp.aliens.at(i).i==3){
dcMemory.DrawIcon(pDoc->sp.aliens.at(i).r.left,pDoc->sp.aliens.at(i).r.top,alien1);}
}
//drawscore&level
dcMemory.TextOutW(200,pDoc->sp.border.bottom-20,pDoc->sp.llvl);
dcMemory.TextOutW(250,pDoc->sp.border.bottom-20,pDoc->sp.lvl);
dcMemory.TextOutW(300,pDoc->sp.border.bottom-20,pDoc->sp.lliv);
dcMemory.TextOutW(350,pDoc->sp.border.bottom-20,pDoc->sp.liv);
dcMemory.TextOutW(400,pDoc->sp.border.bottom-20,pDoc->sp.str);
dcMemory.TextOutW(450,pDoc->sp.border.bottom-20,pDoc->sp.scr);
//drawend
if(pDoc->sp.gameOver==true){
dcMemory.TextOutW(320,240,pDoc->sp.scr);
}
pDC->BitBlt(pDoc->sp.border.left,pDoc->sp.border.top,640,480,&dcMemory,0,0,SRCCOPY);
}
示例12: DrawItem
void CCJOutlookBar::DrawItem(LPDRAWITEMSTRUCT lpDrawItemStruct)
{
CDC* pDC = CDC::FromHandle( lpDrawItemStruct->hDC );
CRect rcItem(lpDrawItemStruct->rcItem);
CRect rClient(rcItem);
CRect rText;
CPoint Pt(((rcItem.Width() - 32) /2 ), rcItem.top + 15);
CContentItems pContents = m_pContents[ lpDrawItemStruct->itemID ];
HICON hIcon = m_ImageListNormal.ExtractIcon( pContents.GetImageID());
// deflate the client rect, and set up item and
// text rect's.
rClient.DeflateRect( 8, 5 );
rcItem.CopyRect( rClient );
rText.CopyRect( rClient );
rText.top += 45;
rText.bottom += 10;
// set the text color to white, and background mode
// to transparent.
pDC->SetTextColor( ::GetSysColor( COLOR_WINDOW ) );
pDC->SetBkMode( TRANSPARENT );
// draw the button icon and text.
if( lpDrawItemStruct->itemAction& ODA_DRAWENTIRE ) {
pDC->DrawIcon( Pt, hIcon );
pDC->DrawText( pContents.GetText(), rText,
DT_CENTER | DT_WORDBREAK );
}
// if the left mouse button is pressed, offset
// the button icon.
if( m_bLBDown ) {
Pt.x += 2;
Pt.y += 2;
rcItem.OffsetRect( 2, 2 );
}
// deflate the button rect, and move up.
rcItem.DeflateRect( 4, 16 );
rcItem.top -= 8;
// Draw the button icon and text, if the mouse is over the
// button, draw the 3d rect, either pressed,
// or not pressed depending on left mouse button.
if(( lpDrawItemStruct->itemState& ODS_SELECTED ) &&
( lpDrawItemStruct->itemAction& ( ODA_SELECT | ODA_DRAWENTIRE ))) {
rcItem.left = ( rcItem.Width()/2 )-5;
rcItem.right = rcItem.left+37;
if( m_bHilight ) {
if( m_bLBDown ) {
pDC->Draw3dRect( rcItem, ::GetSysColor( COLOR_3DDKSHADOW ),
::GetSysColor( COLOR_BTNFACE ) );
}
else {
pDC->Draw3dRect( rcItem, ::GetSysColor( COLOR_BTNFACE ),
::GetSysColor( COLOR_3DDKSHADOW ) );
}
}
pDC->DrawIcon( Pt, hIcon );
pDC->DrawText( pContents.GetText(), rText,
DT_CENTER | DT_WORDBREAK );
}
if( !( lpDrawItemStruct->itemState& ODS_SELECTED ) &&
( lpDrawItemStruct->itemAction& ODA_SELECT )) {
pDC->FillSolidRect( rClient, ::GetSysColor( COLOR_3DSHADOW ) );
pDC->DrawIcon(Pt, hIcon);
pDC->DrawText(pContents.GetText(), rText, DT_CENTER|DT_WORDBREAK);
}
}
示例13: _DrawSoftItem
void CTrashSkipCtrl::_DrawSoftItem(CDC& dc, CRect& rcDraw, int nItemIndex)
{
TRASH_SKIP_ITEM item = m_vecItems[nItemIndex];
HICON hIcon = NULL;
CRect rcCloseBtn(rcDraw);
int xSrc;
_DrawItemBackgnd(dc, rcDraw, nItemIndex);
Gdiplus::Graphics graphics(dc);
rcCloseBtn.left = rcDraw.right - 25;
rcCloseBtn.bottom = rcDraw.top + 25;
if (m_nHoverIndex == nItemIndex && m_nSelectIndex == -1)
{
xSrc = 25;
}
else if (m_nSelectIndex == nItemIndex)
{
xSrc = 50;
}
else
{
xSrc = 0;
}
graphics.DrawImage(m_imgSoftOff, rcCloseBtn.left, rcCloseBtn.top, xSrc, 0, 25, 25, Gdiplus::UnitPixel);
::CopyRect(m_vecItems[nItemIndex].rcItem, rcCloseBtn);
_GetItemIcon(item.strIconPath, hIcon);
CRect rcIcon(rcDraw);
rcIcon.left += (DEF_ITEM_WIDTH - 6 - 32) / 2;
rcIcon.top += 24;
if (!hIcon)
{
KAppRes& res = KAppRes::Instance();
if (item.nItemID == BROWER_IE)
{
hIcon = m_iconIE;
}
else
{
hIcon = m_iconUnknow;
}
dc.DrawIcon(rcIcon.left, rcIcon.top, hIcon);
}
else
{
dc.DrawIconEx(rcIcon.left, rcIcon.top, hIcon, 32, 32);
}
_DrawItemText(dc, rcDraw, item.strName);
if (hIcon && (hIcon != m_iconIE && hIcon != m_iconUnknow))
{
DestroyIcon(hIcon);
}
}