SetThreadDpiHostingBehavior 函数 (winuser.h)

设置线程 的DPI_HOSTING_BEHAVIOR。 此行为允许在线程中创建的窗口托管具有不同 DPI_AWARENESS_CONTEXT的子窗口。

语法

DPI_HOSTING_BEHAVIOR SetThreadDpiHostingBehavior(
  DPI_HOSTING_BEHAVIOR value
);

参数

value

当前线程的新 DPI_HOSTING_BEHAVIOR 值。

返回值

线程的上一 个DPI_HOSTING_BEHAVIOR 。 如果传入的托管行为无效,则不会更新线程,并且将 DPI_HOSTING_BEHAVIOR_INVALID返回值。 在用预定义值重写旧 DPI_HOSTING_BEHAVIOR 后,可以使用此值还原旧DPI_HOSTING_BEHAVIOR。

注解

DPI_HOSTING_BEHAVIOR 启用混合内容托管行为,从而允许在线程中创建的父窗口托管具有不同 DPI_AWARENESS_CONTEXT 值的子窗口。 当混合托管行为处于活动状态时,此属性仅影响在此线程中创建的新窗口。 具有此托管行为的父窗口能够承载具有不同 DPI_AWARENESS_CONTEXT 值的子窗口,而不管子窗口是否启用了混合托管行为。

此托管行为不允许托管具有每监视器 DPI_AWARENESS_CONTEXT 值的窗口, 直到DPI_AWARENESS_CONTEXT值为 系统或不知道的窗口。

为了避免意外结果,应仅在创建需要支持这些行为的新窗口时更改线程 DPI_HOSTING_BEHAVIOR 以支持混合托管行为。 创建该窗口后,托管行为应切换回其默认值。

此 API 用于更改线程的 DPI_HOSTING_BEHAVIOR 默认值。 仅当应用需要从不支持按监视器感知上下文的插件和第三方组件托管子窗口时,才需要这样做。 如果要更新复杂的应用程序以支持按监视器 DPI_AWARENESS_CONTEXT 行为,则最有可能发生这种情况。

启用混合托管行为不会自动调整线程 DPI_AWARENESS_CONTEXT ,使其与旧内容兼容。 在创建新窗口以托管此类内容之前,仍必须手动更改线程的感知上下文。

要求

要求
最低受支持的客户端 Windows 10版本 1803 [仅限桌面应用]
最低受支持的服务器 Windows Server 2016 [仅限桌面应用]
目标平台 Windows
标头 winuser.h
Library User32.lib
DLL User32.dll

另请参阅

DPI_HOSTING_BEHAVIOR

GetThreadDpiHostingBehavior

GetWindowDpiHostingBehavior