我写的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);
}
//
//////////////////////////////
上面的代码可以运行成功, 可以就是没有文字出现,
请大家指出错误之处,谢谢
问题点数:100、回复次数:4Top
1 楼rshu(破裤男人)回复于 2005-01-01 13:38:24 得分 40
被刷新了,Top
2 楼BOYGUARD110(BOYGUARD110)回复于 2005-01-01 14:43:29 得分 0
怎么解决呢 ,谢谢Top
3 楼woodwoodwood3()回复于 2005-01-01 15:01:13 得分 50
放到OnTimer()里面就行了。时间长短自己定。Top
4 楼myling(不理你)回复于 2005-01-01 16:17:56 得分 10
不要使用后备表面
===========================为啥?Top




