Ishkjdhjs 2015-08-18 10:06 采纳率: 50%
浏览 667

新手求助关于direct9窗口输出文字

具体代码如下:void RenderScene()
{
g_D3DDevice->Clear(0, NULL, D3DCLEAR_TARGET, D3DCOLOR_XRGB(255,0,0), 1.0f, 0);

g_D3DDevice->BeginScene();
ShowTips();
g_D3DDevice->EndScene();
g_D3DDevice->Present(NULL, NULL, NULL, NULL);

}

void ShowTips()
{
D3DXFONT_DESC d3dFont;
memset(&d3dFont,0,sizeof(d3dFont));
d3dFont.Height = 37;
d3dFont.Width = 15;

d3dFont.Weight = 1000;
d3dFont.Italic = FALSE;
d3dFont.CharSet = DEFAULT_CHARSET;
d3dFont.OutputPrecision = 0;

d3dFont.MipLevels = D3DX_DEFAULT;

d3dFont.Quality = 0;

d3dFont.PitchAndFamily = 0;
wcscpy_s(d3dFont.FaceName, L"Times New Roman");
ID3DXFont* font=0;
if(FAILED(D3DXCreateFontIndirect(g_D3DDevice, &d3dFont, &font)))
return ;
TCHAR tip[] = TEXT ("试验");
RECT rect = {::GetSystemMetrics(SM_CXSCREEN)/2-250 + 10,10,::GetSystemMetrics(SM_CXSCREEN)/2+240,50};
// HDC hdc = font->GetDC();
// SetTextColor(hdc, RGB(255,255,255)) ;
// DrawText(hdc,tip,sizeof(tip),&rect,DT_CENTER);
font->DrawText(
NULL,
tip,
-1,
&rect,
DT_CENTER,
D3DCOLOR_ARGB(0,255,0,100)
);
font->Release();
} 响应的是WM_PAINT消息 渲染有效果 但是文字未显示出来 调试 font->DrawText 返回值为36 说明执行成功了 为什么不显示呢

void CreatTipsWnd(HINSTANCE hInstance)
{
static TCHAR szAppName[] = TEXT ("tips");

wndclasstips.style        = CS_HREDRAW | CS_VREDRAW ; 
wndclasstips.lpfnWndProc  = WndProc; 
wndclasstips.cbClsExtra   = 0 ; 
wndclasstips.cbWndExtra   = 0 ; 
wndclasstips.hInstance    = hInstance ;
wndclasstips.hIcon        = /*LoadIcon (NULL, NULL)*/ NULL;
wndclasstips.hCursor      = /*LoadCursor (NULL, IDC_ARROW)*/ NULL; 
wndclasstips.hbrBackground= (HBRUSH) GetStockObject (BLACK_BRUSH); 
wndclasstips.lpszMenuName  = NULL ; 
wndclasstips.lpszClassName= szAppName ;

if (!RegisterClass (&wndclasstips)) 
    return ;
TipsWnd = CreateWindow( szAppName,     
    szAppName,  
    WS_EX_TOOLWINDOW|WS_POPUP,
    ::GetSystemMetrics(SM_CXSCREEN)/2-250,  
    0,  
    //::GetSystemMetrics(SM_CXSCREEN),  
    //::GetSystemMetrics(SM_CYSCREEN), 
    500,
    100,
    NULL,                 
    NULL,           
    hInstance,     
    NULL) ;  
//dx写提示
if(InitializeD3D(TipsWnd,false))
{
    //show windows  
    RenderScene();
    ShowWindow(TipsWnd,SW_SHOW);
    UpdateWindow(TipsWnd);
}
//gdi写提示

// ::TextOut(hdc,r.left - 10,r.top - 15,TipContent,sizeof(TipContent));
// SetWindowPos(TipsWnd,HWND_TOPMOST, ::GetSystemMetrics(SM_CXSCREEN)/2-250,

// 0,

// 500,
// 100,SWP_HIDEWINDOW);
// ShowWindow (TipsWnd, SW_HIDE);
// UpdateWindow (TipsWnd) ;
}

这个是窗口创建 注册函数

  • 写回答

0条回答 默认 最新

    报告相同问题?

    悬赏问题

    • ¥20 sub地址DHCP问题
    • ¥15 delta降尺度计算的一些细节,有偿
    • ¥15 Arduino红外遥控代码有问题
    • ¥15 数值计算离散正交多项式
    • ¥30 数值计算均差系数编程
    • ¥15 redis-full-check比较 两个集群的数据出错
    • ¥15 Matlab编程问题
    • ¥15 训练的多模态特征融合模型准确度很低怎么办
    • ¥15 kylin启动报错log4j类冲突
    • ¥15 超声波模块测距控制点灯,灯的闪烁很不稳定,经过调试发现测的距离偏大