在某些情况下,升级到较新版本后,Windows 10 在某些 32 位应用程序中创建窗口时从 msctf.dll 调用 CreateWindowEx 函数时会导致崩溃或其他问题。在这篇文章中,我们将了解 CreateWindowEx 函数是什么——探索此函数错误的可能原因,然后提供推荐的解决方案来缓解该问题。
了解 CreateWindowEx 函数

Windows 应用程序(包括使用 Windows 窗体或 Windows Presentation Foundation (WPF) 的 .NET 应用程序)通过调用 CreateWindowExA 或 CreateWindowExW 函数创建其窗口。
这两个函数在内部调用一个通用的 USER32 函数,该函数将执行一些参数验证,例如调用中指定的窗口样式和句柄,如果指定了WS_EX_MDICHILD扩展窗口样式,则处理创建 MDI 子窗口,并处理调用线程的当前激活上下文。如果 CreateWindowEx 调用的 USER32 端一切正常,则它将调用 CreateWindowEx 的内核模式 (WIN32K) 实现。
CreateWindowEx 在尝试创建新的窗口对象时将执行以下任务:
• 确定为新窗口对象创建句柄是否会超过调用进程的用户句柄配额限制。
• 从桌面堆中为新窗口对象分配内存。
• 初始化新窗口对象的内存。
• 在用户句柄表中为新窗口对象创建句柄。
CreateWindowEx 失败的原因
可以触发 CreateWindowEx 函数问题的一些条件枚举如下:
• 指定的窗口类不存在。
• 使用无效的窗口样式或扩展的窗口样式。
• 使用无效的用户句柄,例如窗口句柄和菜单句柄。
• 尝试在不指定父窗口的情况下创建子窗口。
• 尝试创建子窗口或拥有的窗口,并且指定的父级/所有者与调用线程属于不同的桌面。
• 创建子窗口或拥有的窗口将超出嵌套窗口限制。
• 创建新的窗口对象将超过调用进程的句柄配额。
• 桌面堆中没有足够的可用堆来为新窗口对象分配内存。
• 用户句柄表中没有可用的条目。
修复 Windows 10 中 32 位应用的 CreateWindowEx 函数问题
Microsoft 提供了解决 CreateWindowEx 函数问题的解决方法。
若要解决此问题,必须将 Windows 10 安装回滚到以前的版本。
升级 Windows 10 安装后的 10 天(在大多数情况下),Windows 10 中的回滚选项可用。
此操作将保留您的个人文件,但会删除升级后安装的应用程序和驱动程序,并撤消对设置所做的任何更改。
如果回滚选项不可用 - 备份您的个人文件,则可以联系您的 IT 支持或支持人员或 Microsoft 支持,以获取将设备还原到以前的 Window 10 版本的帮助。
相关文章
U盘装系统(http://www.upzxt.net) 版权所有 (网站邮箱:78435178@qq.com)
本站资源均收集与互联网,其著作权归原作者所有,如侵犯到您的权益的资源,请来信告知,我们及时撤销相应资源