DirectX学习笔记(2)

 接着上节内容继续学习了。

这节学习使用Direct Graphics取得绘图设备GDI

打开上节的工程,在其中添加新类d3dHDC

声明如下:

// d3dHdc.h: interface for the d3dHdc class.
//
//

#if !defined(AFX_D3DHDC_H__2B73FC05_A098_4F64_892B_B511407084DA__INCLUDED_)
#define AFX_D3DHDC_H__2B73FC05_A098_4F64_892B_B511407084DA__INCLUDED_

#if _MSC_VER > 1000
#pragma once
#endif // _MSC_VER > 1000
#include <d3d9.h>
class d3dHdc 
{
public:
 d3dHdc();
 virtual ~d3dHdc();
private:
 HDC m_hdc;
 LPDIRECT3DSURFACE9 m_Surface;
public:
 void Release();
 inline operator HDC(){return m_hdc;};

};

#endif // !defined(AFX_D3DHDC_H__2B73FC05_A098_4F64_892B_B511407084DA__INCLUDED_)
实现文件如下:

d3dHdc::d3dHdc()
{
     m_hdc=0;
  m_Surface=0;
  if(!d3d_Device)
    return;
  if (d3d_Device->GetBackBuffer(0,0,D3DBACKBUFFER_TYPE_MONO,&m_Surface)!=D3D_OK)
  {
   return;
  }
  m_Surface->GetDC(&m_hdc);
}

d3dHdc::~d3dHdc()
{

}
void d3dHdc::Release()
{
 if(m_Surface)
 {
  if(m_hdc)
  {
   m_Surface->ReleaseDC(m_hdc);
   m_Surface->Release();
   m_hdc=NULL;
   m_Surface=NULL;
  }
 }
}

调用的代码如下:

在Render函数中添加如下代码:

   LPCTSTR str="欢迎来到Direct3d的世界!";
 d3dClear();
 d3dHdc hdc;
 SetTextColor(hdc,RGB(255,0,0));
SetBkColor(hdc,RGB(0,255,0));
SetBkMode(hdc,OPAQUE);
 TextOut(hdc,0,0,str,strlen(str));
 hdc.Release();

 d3d_Device->Present( NULL , NULL , NULL , NULL );

这样就知道了Direct GRaphics是如何与Windows进行沟通的,下节学习绘图了。

转载于:https://www.cnblogs.com/jh0262/archive/2007/12/03/2946812.html

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值