我写的directX的 hello world 程序,问题请看具体内容?
在网上搜了一些入门的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);
}
//
//////////////////////////////
上面的代码可以运行成功, 可以就是没有文字出现,
请大家指出错误之处,谢谢