求助:DirectX中 TextOut怎么不能显示

SilentClock 2005-05-28 02:49:17
小弟刚学DirectX编程,刚写的第一个Hello,World程序。不巧,显示都不行。
看了看代码,估计是在这里的问题。
BOOL InitDDraw(void)
{
DDSURFACEDESC ddsd; //页面描述
HDC hdc; //设备环境句柄
if ( DirectDrawCreate( NULL, &lpDD, NULL ) != DD_OK ) return FALSE;
if ( lpDD->SetCooperativeLevel( GetActiveWindow(),DDSCL_EXCLUSIVE | DDSCL_FULLSCREEN ) != DD_OK)
return FALSE;
if ( lpDD->SetDisplayMode( 640, 480, 8 ) != DD_OK) return FALSE;
ddsd.dwSize = sizeof( ddsd );
ddsd.dwFlags = DDSD_CAPS ;
ddsd.ddsCaps.dwCaps = DDSCAPS_PRIMARYSURFACE;
if ( lpDD->CreateSurface( &ddsd, &lpDDSPrimary, NULL ) != DD_OK)
return FALSE;
if ( lpDDSPrimary->GetDC(&hdc) != DD_OK) return FALSE;
SetBkColor( hdc, RGB( 0, 0, 255 ) );
SetTextColor( hdc, RGB( 255, 255, 0 ) );
TextOut( hdc, 220, 200, szMsg1, lstrlen(szMsg1));
TextOut( hdc, 280, 240, szMsg2, lstrlen(szMsg2));
lpDDSPrimary->ReleaseDC(hdc);
return TRUE;
}
注:小弟调试的时候能看到字体的输出。
谢谢各位大虾了
...全文
127 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
qwprince2004 2005-06-07
  • 打赏
  • 举报
回复
楼上的 多谢赐教 你真牛~
bshaoa 2005-06-05
  • 打赏
  • 举报
回复
你在初始化的时候就已经显示了文字了, (注意:它只现实一次), 以后再重新渲染的话, 把刚才的那一帧覆盖了, 应该在游戏住循环里显示文字, 而不是在初始化时(当然, 如果你初始化以后不再进行任何渲染那也能看到);
至于上面几位说的WM_PAINT, 我只能说你们对游戏编程的理解不深。游戏编程中很少用MESSAGE,一般在主循环里做自己想做的事情。(否则会不同步,因为有主循环一般在没有消息的时候才开始运行, 相当于MFC中的OnIdle()).
localman 2005-05-29
  • 打赏
  • 举报
回复
文字输出代码放在渲染中
qwprince2004 2005-05-29
  • 打赏
  • 举报
回复
装载的时候不要输出 把你的TEXTOUT 放到 GAME_MAIN(void)里面吧
qwprince2004 2005-05-29
  • 打赏
  • 举报
回复
DX 没有用这样的输出文字的方式的.... 确切的是DX根本没有自己的文字输出
用GDI的话 你应该在WM_PAINT中 或者是 游戏循环里 textout
NetGamer 2005-05-28
  • 打赏
  • 举报
回复
把显示部分写在WM_PAINT消息处理函数中

8,303

社区成员

发帖
与我相关
我的任务
社区描述
游戏开发相关内容讨论专区
社区管理员
  • 游戏开发
  • 呆呆敲代码的小Y
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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