首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >当窗口不在屏幕上时,为什么CreateDIBSection()失败?

当窗口不在屏幕上时,为什么CreateDIBSection()失败?
EN

Stack Overflow用户
提问于 2009-03-25 18:59:04
回答 1查看 900关注 0票数 1

我正在构建一个Delphi组件,用于在VCL窗体上嵌入SDL渲染图面。只要表单在创建SDL曲面时显示在屏幕上,它就可以正常工作。否则,它不能创建任何渲染纹理。

我跟踪到SDL代码,并以以下函数调用结束,该函数调用失败(返回NULL):

代码语言:javascript
复制
data->hbm = CreateDIBSection(renderdata->memory_hdc, bmi, DIB_RGB_COLORS, &data->pixels, NULL, 0);

HDC是指向绘图上下文的有效句柄,该句柄由具有自己的HWND窗口句柄的控件拥有,该控件已正确设置。但是,当控件在屏幕外创建时(在Delphi中通常会发生这种情况)(所有窗体及其控件都是在隐藏状态下创建的,直到可以显示它们为止),CreateDIBSection调用将失败,直到控件真正可见为止。

此外,如果它是在屏幕上创建的,那么在这个过程中,我创建的任何纹理都会被隐藏和重新显示(例如,如果它在标签页上,并且我切换了标签)。

这快把我逼疯了。有人知道这是怎么回事吗?我该怎么解决呢?

EN

回答 1

Stack Overflow用户

发布于 2016-07-06 04:29:01

绘图上下文仅在绘图处理期间有效。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/682980

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档