VC++ game(二)显示位图

这个工程在上个博客VC++ game开场篇中的基础上继续写:

显示位图做以下几个工作:
1:定义一个CDC* cDC 指针,定义方法可以手动到.h中定义,也可以在类视图下,右键你要添加变量的类,选择添加变量,选择变量类型,作用范围,变量名。一些没有罗列出来的数据类型,可以手动输入:比如:RECT  CBitmap等等。
我们定义一个CDC指针和一个CBimap 指针
2:在资源文件中将其初始化。并为bitmap加载资源。详情见代码。
3:在类视图中对选择的类进行添加VM_ONPAINT消息,在自动生成的代码中进行如下操作,详情见代码:
CMyWnd.cpp:

// MyWnd.cpp : 实现文件
//

#include "stdafx.h"
#include "MyWnd.h"


// CMyWnd

IMPLEMENT_DYNCREATE(CMyWnd, CFrameWnd)

CMyWnd::CMyWnd()
: cDc(NULL)
{

	 Create(NULL,"window");
	 CClientDC dc(this);
	 /*
	 beside CClientDc ,there are another two CDC'child class: 
		CWindowDC(draw everywhere you want ) 
		CPaintDC(only in OnPaint()function)
	*/
	 //GetClientRect(windowRect);//the show view
	 //GetWindowRect(windowRect);	 the whole view 
	 //dc.TextOutA(100,100,"GOOD",5);	  have a problem
	 int width=dc.GetDeviceCaps(HORZRES);//get the decice's width
	 int height=dc.GetDeviceCaps(VERTRES);
	 width=(width-800)/2;
	 height=(height-600)/2;
	 MoveWindow(width,height,800,600);
	 cDc=new CDC();
	 bacBitmap=new CBitmap();
	 bacBitmap->m_hObject=(HBITMAP)::LoadImage(NULL,"bac.bmp",IMAGE_BITMAP,800,520,LR_LOADFROMFILE);
}

CMyWnd::~CMyWnd()
{
}


BEGIN_MESSAGE_MAP(CMyWnd, CFrameWnd)
	ON_WM_PAINT()
END_MESSAGE_MAP()


// CMyWnd 消息处理程序


void CMyWnd::OnPaint()
{	  /*
	  steps to show a bitmap
	  1:new a CDC pointer
	  2:a CBitmap Object and load the bitmap resource
	  3:at the OnPaint()function CDC pointer CreateCompatibleDC(&dc);
	  4:CDC pointer select the bitmap object
	  5:CPaintDC invoke BitBit()function
	  */
	CPaintDC dc(this); // device context for painting
	cDc->CreateCompatibleDC(&dc);
	cDc->SelectObject(bacBitmap);
	dc.BitBlt(0,0,800,520,cDc,0,0,SRCCOPY);
	// TODO: 在此处添加消息处理程序代码
	// 不为绘图消息调用 CFrameWnd::OnPaint()
}




  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值