SetParent 的文档中的“同步 UIState”是啥意思?

Posted

技术标签:

【中文标题】SetParent 的文档中的“同步 UIState”是啥意思?【英文标题】:What does "synchronise the UIState" mean in the docs for SetParent?SetParent 的文档中的“同步 UIState”是什么意思? 【发布时间】:2016-06-05 16:44:53 【问题描述】:

user32.dll 的 SetParent 函数的文档指出

当您更改窗口的父级时,您应该同步两个窗口的 UISTATE。有关详细信息,请参阅WM_CHANGEUISTATE 和 WM_UPDATEUISTATE。

我浏览了这些页面,字符序列sync 根本没有出现。我最好的猜测是我打算向新的父窗口发送WM_UPDATEUISTATE 消息,但我不知道要使用什么参数。

如果应该是UIS_INITIALIZE那么我就拿注释的第二段来表示消息可能会被丢弃,所以我不相信它会保证父子之间的状态同步. 如果应该是两条消息,一条带有UIS_CLEAR,另一条带有UIS_SET,那么我不明白为什么SetParent文档也没有提到WM_QUERYUISTATE,所以这个选项没有说服我。

同步 UISTATE”的正确解释是什么?

【问题讨论】:

【参考方案1】:

没关系。您的应用程序将如何工作由您决定。 您可以清除两者,或者采用一种状态并为另一个窗口设置相同的状态,或者您可以查询最后一个输入法鼠标/键盘,如果鼠标则隐藏,如果键盘则显示。

【讨论】:

以上是关于SetParent 的文档中的“同步 UIState”是啥意思?的主要内容,如果未能解决你的问题,请参考以下文章

QObject 使用 setParent() 将 QList 设置为父级

c# process调用setparent 不管用

VB中用SetParent函数让应用程序在指定窗体中运行

WPF 使用SetParent嵌套窗口

使用 SetParent 冻结父窗口

关于Qt中QWidget的setParent的使用方法