Adobe Air具有WS_EX_LAYERED窗口样式

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Adobe Air具有WS_EX_LAYERED窗口样式相关的知识,希望对你有一定的参考价值。

我试图在外部Adobe Air应用程序上设置WS_EX_LAYERED扩展窗口样式。 See this question如果你想知道为什么。我面临的问题是,一旦我设置了样式,窗口就会停止渲染。这是我的代码:

auto style = GetWindowLong(hwnd, GWL_EXSTYLE);
SetWindowLong(hwnd, GWL_EXSTYLE, style | WS_EX_LAYERED);
// If I skip the next line, the window is suddenly white.
// With the next line, the image in the window freezes.
SetLayeredWindowAttributes(hwnd, 0, 255, LWA_ALPHA);

窗口继续完美地工作(点击等),它不再重新绘制(f.e。调整大小时)。窗户没有CS_OWNDCCS_CLASSDC风格。

谁能告诉我原因是什么?

答案

您的渲染模式在应用程序描述符文件中设置为什么?我想你的方法是行不通的,除非你专门设置它通过CPU渲染,即使AIR使用GDI函数来显示内容。我认为默认情况下它可能会使用GPU加速,因此通过SetWindowLong设置样式可能会干扰这一点。

如果您不确定如何更改渲染模式:

  • 找到应用程序的已安装文件夹(在“Program Files(x86)”下)
  • 输入“META-INF AIR”子文件夹
  • 编辑“application.xml”文件
  • 在“initialWindow”部分中查找“renderMode”(或者如果它不在那里,添加它..)并将其设置为“cpu”
  • 保存此项,然后重新启动AIR应用程序

请参阅AIR Descriptor File信息。

以上是关于Adobe Air具有WS_EX_LAYERED窗口样式的主要内容,如果未能解决你的问题,请参考以下文章

Adobe Air - 从 IconItemRenderer 中的文件加载 PNG 图像

如何在Adobe Air上运行现有的SWF文件

是否有任何EPUB库动作脚本(adobe air)?

Adobe Air Introspector命令

linux adobe air 无法安装

Adobe Air - 使用 Air 打开文件