游戏开发论坛

 找回密码
 立即注册
搜索
查看: 3562|回复: 2

请教MFC窗口大小调整的问题

[复制链接]

30

主题

357

帖子

388

积分

中级会员

Rank: 3Rank: 3

积分
388
QQ
发表于 2006-10-5 16:47:00 | 显示全部楼层 |阅读模式
我在View窗口的OnSize中的代码如下:
void CMFC_Direct3DView::OnSize(UINT nType, int cx, int cy)
{
        CView::OnSize(nType, cx, cy);

        // TODO: 在此处添加消息处理程序代码
        OnDirectxD3dRelease(); //释放D3D窗口
        OnDirectxD3dCreate(); //创建D3D窗口 ---创建的D3D窗口将和当前的View窗口同样大小
}

D3D窗口是View窗口的子窗口。
创建D3D窗口时已将D3D窗口与View窗口同样大小。
当我快速来回拉动窗口大小的时候就会出错,慢慢拉动窗口出错概率有所降低。出错调试的时候看了一下,是初始化D3D出错,渲染设备值为NULL。
D3D初始化是在OnCreate里的。
而且,刚启动程序的时候D3D的初始化有两次是失败的,第3次才建立成功!

OTZ  OJZ
已经是焦头烂额了,同志们帮帮我!需要代码的话我就贴上来。 [em6] [em6] [em6]

3

主题

155

帖子

161

积分

注册会员

Rank: 2

积分
161
发表于 2006-10-5 18:16:00 | 显示全部楼层

Re:请教MFC窗口大小调整的问题

如果OnDirectxD3dCreate(); 是系统消息触发的;(从"On"我猜的)
你不应该直接调用.
OnDirectxD3dCreate(); 是D3D创键后调用,供你初始化用
你应该调用CreateD3D之类的...

30

主题

357

帖子

388

积分

中级会员

Rank: 3Rank: 3

积分
388
QQ
 楼主| 发表于 2006-10-5 22:01:00 | 显示全部楼层

Re:请教MFC窗口大小调整的问题

OnDirectxD3dCreate(); 是响应一个按钮触发的,是事件触发。代码如下:
void CMFC_Direct3DView::OnDirectxD3dCreate()
{
        // TODO: 在此添加命令处理程序代码
        CRect temp;
        GetWindowRect(&temp);
        temp.right -= temp.left;
        temp.bottom -= temp.top;
        temp.left = 0;
        temp.top = 0;
                //创建D3D子窗口,与View窗口同样大小
        m_DirectWnd.CreateEx(0, AfxRegisterWndClass(0,NULL,NULL,NULL), "D3D窗口", WS_CHILD | WS_VISIBLE | WS_BORDER, temp, this, 0);
        m_bIsD3DWndCreate = true;
}

//释放D3D子窗口
void CMFC_Direct3DView::OnDirectxD3dRelease()
{
        // TODO: 在此添加命令处理程序代码
        m_DirectWnd.DestroyWindow();
        m_bIsD3DWndCreate = false;
}
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

作品发布|文章投稿|广告合作|关于本站|游戏开发论坛 ( 闽ICP备17032699号-3 )

GMT+8, 2026-1-25 14:04

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表