关于 directx 的问题

gbstar2021 2001-06-18 09:31:00
我想在一个 ActiveX 控件(由Mfc向导创建的)的窗口内初始化 directx
代码如下
int CxxxCtrl::OnCreate(LPCREATESTRUCT lpCreateStruct)
{
HRESULT hr;
HWND hWnd=GetSafeHwnd();
if(FAILED(DirectDrawCreateEx(NULL,(void**)&m_pDD,IID_IDirectDraw7,NULL)))
return -1;
// SetCooperativeLevel 会导致 assert failure why???
if(FAILED(m_pDD->SetCooperativeLevel(hWnd,DDSCL_NORMAL)))
return -1;
// Create the primary surface
.....
}
为什么SetCooperativeLevel调用不成功呢
...全文
215 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
tlovexyj 2001-06-18
  • 打赏
  • 举报
回复
OnCreate时hWnd无效。
dave75 2001-06-18
  • 打赏
  • 举报
回复
gz
tlovexyj 2001-06-18
  • 打赏
  • 举报
回复
会马上调用WM_PAINT,但是你如果不作任何处理就把代码加进去的话,你就会……
gbstar2021 2001-06-18
  • 打赏
  • 举报
回复
push
gbstar2021 2001-06-18
  • 打赏
  • 举报
回复
你的向导是不是 《高性能。。。。。》书的配套盘
在 directX8a 中提供了 IDirectDraw7 的接口

我的问题是在 ActiveX控件的 OnCreate 中,GetSafeHwnd()/m_hWnd 都为无效的窗口句柄
除了 OnCreate,窗口创建完毕之后还会调用什么呢???
tlovexyj 2001-06-18
  • 打赏
  • 举报
回复
贴点代码出来你瞅瞅:
int DirectDrawWin::OnCreate(LPCREATESTRUCT)
{
DirectDrawEnumerate( DriverAvailable, this );

if (totaldrivers==0)
{
AfxMessageBox("No DirectDraw drivers detected");
return -1;
}

// insure the first entry is the primary display driver
if (driver[0].guid!=0 && totaldrivers>1)
{
for (int i=1;i<totaldrivers;i++)
if (driver[i].guid==0)
{
DriverInfo tmp;

tmp.guid=0;
tmp.desc=driver[i].desc;
tmp.name=driver[i].name;

driver[i].guid=driver[0].guid;
driver[i].desc=driver[0].desc;
driver[i].name=driver[0].name;

driver[0].guid=0;
driver[0].desc=tmp.desc;
driver[0].name=tmp.name;
}
}

int driverindex=SelectDriver();
if (driverindex<0)
{
TRACE("No DirectDraw driver selected\n");
return -1;
}
else if (driverindex>totaldrivers-1)
{
AfxMessageBox("Invalid DirectDraw driver selected\n");
return -1;
}

LPDIRECTDRAW ddraw1;
DirectDrawCreate( driver[driverindex].guid, &ddraw1, 0 );
HRESULT r;
r=ddraw1->QueryInterface( IID_IDirectDraw2, (void**)&ddraw2 );
if (r!=S_OK)
{
AfxMessageBox("DirectDraw2 interface not supported");
return -1;
}
ddraw1->Release(), ddraw1=0;

ddraw2->SetCooperativeLevel( GetSafeHwnd(), DDSCL_EXCLUSIVE | DDSCL_FULLSCREEN | DDSCL_ALLOWMODEX );

ddraw2->EnumDisplayModes( 0, 0, this, DisplayModeAvailable );
qsort( displaymode, totaldisplaymodes, sizeof(DisplayModeInfo), CompareModes );

CDC* dc=GetDC();
displaydepth=dc->GetDeviceCaps( BITSPIXEL );
displayrect.left=0;
displayrect.top=0;
displayrect.right=dc->GetDeviceCaps( HORZRES );
displayrect.bottom=dc->GetDeviceCaps( VERTRES );
dc->DeleteDC();

int initmode=SelectInitialDisplayMode();
if (ActivateDisplayMode( initmode )==FALSE)
return -1;

return 0;
}

我有一个很好的DirectDraw向导,用的就是DX+MFC,很好用的。
看我的主页: 202.114.96.194/~cityhunter
gbstar2021 2001-06-18
  • 打赏
  • 举报
回复
t
gbstar2021 2001-06-18
  • 打赏
  • 举报
回复
to tlovexyj
you are right,thank you

但是,能告诉我在那里初始化吗?
内容概要:本文围绕基于蜣螂优化算法(DBO)的无线传感器网络(WSN)覆盖优化问题展开研究,提出了一种创新性的智能优化解决方案,并提供了完整的Matlab代码实现。研究首先分析了传统WSN覆盖优化中存在的覆盖率低、能耗不均等问题,随后引入蜣螂优化算法这一新型群体智能算法,通过模拟蜣螂的生物行为机制,构建了适用于传感器节点部署优化的数学模型。文中详细阐述了算法的设计思路、实现步骤及其在提高网络覆盖率、延长网络生命周期方面的有效性,同时通过仿真实验与其他主流优化算法进行了对比,验证了所提方法的优越性。; 适合人群:具备一定优化算法基础和Matlab编程能力,从事通信工程、物联网、智能优化等相关领域的研究生及科研人员。; 使用场景及目标:①解决无线传感器网络中节点部署不合理导致的覆盖盲区问题;②提升网络整体覆盖性能与资源利用效率;③为智能优化算法在实际工程中的应用提供可复现的研究案例和技术参考。; 阅读建议:建议读者结合文中的Matlab代码进行实践操作,重点关注算法参数设置、适应度函数设计及仿真结果分析部分,同时可尝试将该算法迁移至路径规划、资源调度等其他优化场景中进行拓展研究。
已经博主授权,源码转载自 https://pan.quark.cn/s/a4b39357ea24 在信息技术领域,特别是软件编程行业,微软公司推出的集成开发环境(IDE)Visual Studio,凭借其卓越的功能和广泛的适用范围,成为了众多程序员的常用工具。不过,在实际操作期间,用户可能会遭遇各种挑战,其中一种较为普遍的挑战是“Visual Studio遭遇了异常情况,这或许与某个附加组件有关”。本文将详细研究这一现象的成因、潜在后果以及最终的应对措施。 ### 原因剖析 Visual Studio通过支持多种插件和附加组件来扩展其功能,这些组件通常由第三方开发者设计,旨在为用户提供更多个性化和专业化的工具。然而,这些插件的质量良莠不齐,部分可能未经过充分的测试或与特定版本的Visual Studio存在兼容性难题,从而在执行时引发异常。异常的出现可能源于以下几个因素: 1. **代码缺陷**:若附加组件中的代码存在逻辑问题或资源管理不当,就可能导致运行时异常。 2. **资源竞争**:多个插件同时占用相同的资源(例如内存、文件句柄等),可能会产生资源冲突,进而触发异常。 3. **依赖不匹配**:插件可能需要特定版本的库或框架,如果系统中安装的版本不一致,也可能导致异常。 4. **安全隐患**:部分插件可能存在安全漏洞,一旦被恶意利用,可能会导致更严重的问题,包括但不限于异常崩溃。 ### 后果分析 当Visual Studio遇到由附加组件引发的异常时,不仅会中断当前的工作进程,降低开发效能,还可能带来以下潜在风险: 1. **数据遗失**:若异常发生在保存操作之前,可能会导致未保存的工作内容遗失。 2. **稳定性减弱**:频繁的异常会导致Visual Stud...

16,550

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC相关问题讨论
社区管理员
  • 基础类社区
  • Creator Browser
  • encoderlee
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

        VC/MFC社区版块或许是CSDN最“古老”的版块了,记忆之中,与CSDN的年龄几乎差不多。随着时间的推移,MFC技术渐渐的偏离了开发主流,若干年之后的今天,当我们面对着微软的这个经典之笔,内心充满着敬意,那些曾经的记忆,可以说代表着二十年前曾经的辉煌……
        向经典致敬,或许是老一代程序员内心里面难以释怀的感受。互联网大行其道的今天,我们期待着MFC技术能够恢复其曾经的辉煌,或许这个期待会永远成为一种“梦想”,或许一切皆有可能……
        我们希望这个版块可以很好的适配Web时代,期待更好的互联网技术能够使得MFC技术框架得以重现活力,……

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