gpt4 book ai didi

c - Win32 公共(public)控件初始化会破坏自定义控件吗?

转载 作者:可可西里 更新时间:2023-11-01 11:13:01 26 4
gpt4 key购买 nike

所以我正在尝试在 Win32 中初始化公共(public)控件和视觉样式。我构建了一个包含我编写的一些自定义控件的 DLL,以及一个包含 GUI 应用程序的 EXE。

通常,职责分离似乎是我的 DLL 不应该担心我们是否启用窗口样式。它应该只生成自定义控件并将它们公开给依赖的 EXE。然后 EXE 可以决定它是否需要视觉样式,而 DLL 一点也不知道。

问题是这样的:我让我的 DLL 在进程附加上的 DllMain 中注册它的窗口类。但是,如果我在 EXE 中调用 InitCommonControlsEx,自定义控件中的按钮和诸如此类的东西不会显示,因为自定义控件在 EXE 可以初始化公共(public)控件之前注册。

为了证明这一点,我在名为 InitCommonControlsEx 的 EXE 之后 强制注销和重新注册我的自定义控件,它修复了它:按钮显示在我的自定义控件上,具有视觉样式。 p>

在理想情况下,我希望能够在未来的程序中链接到我的共享库,并开始使用自定义控件,而不用担心修复通用控件和样式的问题。这可能吗?

最佳答案

简短的回答是,您不打算注册窗口类或 do much of anythingDllMain() 中。

您应该提供一个从 DLL 导出的单独的 Init() 函数,应用程序可以调用该函数来注册 DLL 的控件,就像调用函数 (InitCommonControls() ) 来注册公共(public)控件。

关于c - Win32 公共(public)控件初始化会破坏自定义控件吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19393512/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com