我写的directX的 hello world 程序,问题请看具体内容?

BOYGUARD110 2005-01-01 01:29:16

在网上搜了一些入门的hello world 级别的 directX 程序,
感觉还是不够hello world,不够简单,我的要求如下:

1. 用directX 显示出hello world

2. 所有的 过程 放在一个函数中 一个直筒子下来,不要调来调去,

3. 不要使用后备表面(是不是 非要用后备表面 ?)

////////////////////////////
//
我写的代码如下

windows2000 , vc6.0 ,mfc sdi 框架



#include <ddraw.h>
#pragma comment(lib,"Ddraw.lib")


//
///////////////////////////////////////////////

void CMainFrame::OnMenuitem32772()
{

LPDIRECTDRAW lpDD;
LPDIRECTDRAWSURFACE lpDDSPrimary;



if ( ::DirectDrawCreate( NULL, &lpDD, NULL ) != DD_OK )
{ AfxMessageBox(" "); return ; }

HWND hwnd = ::GetActiveWindow();

// 取得独占和全屏模式
if ( lpDD->SetCooperativeLevel
(hwnd,DDSCL_EXCLUSIVE |DDSCL_FULLSCREEN ) != DD_OK)
{ AfxMessageBox(" "); return ; }



// 设置显示模式
if ( lpDD->SetDisplayMode( 640, 480, 8 ) != DD_OK)
{ AfxMessageBox(" "); return ; }


// 存放 DirectX 页面描述
DDSURFACEDESC ddsd={0};
ddsd.dwSize = sizeof( ddsd );// 结构的大小
ddsd.dwFlags = DDSD_CAPS|DDSD_BACKBUFFERCOUNT;
ddsd.ddsCaps.dwCaps = DDSCAPS_PRIMARYSURFACE

if ( lpDD->CreateSurface( &ddsd, &lpDDSPrimary, NULL ) != DD_OK)
{ AfxMessageBox(" "); return ; }

//输出文字
HDC hdc; //设备环境句柄

//输出文字
if ( lpDDSPrimary->GetDC(&hdc) != DD_OK)
{ AfxMessageBox(" "); return ; }

char str[] = "hello world";

::SetBkColor( hdc, RGB( 0, 0, 255 ) );
::SetTextColor( hdc, RGB( 255, 255, 0 ) );
::TextOut( hdc, 10, 10, str, lstrlen(str));


lpDDSPrimary->ReleaseDC(hdc);

}

//
//////////////////////////////

上面的代码可以运行成功, 可以就是没有文字出现,

请大家指出错误之处,谢谢










...全文
151 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
myling 2005-01-01
  • 打赏
  • 举报
回复
不要使用后备表面

===========================为啥?
woodwoodwood3 2005-01-01
  • 打赏
  • 举报
回复
放到OnTimer()里面就行了。时间长短自己定。
BOYGUARD110 2005-01-01
  • 打赏
  • 举报
回复

怎么解决呢 ,谢谢
rshu 2005-01-01
  • 打赏
  • 举报
回复
被刷新了,

19,468

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 图形处理/算法
社区管理员
  • 图形处理/算法社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧