所以我试图在 Win32 中初始化通用控件和视觉样式。我构建了一个包含我编写的一些自定义控件的 DLL,以及一个包含 GUI 应用程序的 EXE。
通常,责任分离似乎是我的 DLL 不应该担心我们是否启用窗口样式。它应该只生成自定义控件并将它们公开给依赖的 EXE。然后,EXE 可以决定是否需要视觉样式,而 DLL 则更明智。
问题是这样的:我的 DLL 在进程附加时在 DllMain 中注册了它的窗口类。但是如果我在 EXE 中调用 InitCommonControlsEx,我的自定义控件中的按钮和其他东西不会显示出来,因为自定义控件是在 EXE 初始化公共控件之前注册的。
为了证明这一点,我在名为 InitCommonControlsEx 的 EXE之后强制取消注册和重新注册我的自定义控件,并且它修复了它:按钮显示在我的自定义控件上,具有视觉样式。
在一个理想的世界里,我希望能够在未来的程序中链接到我的共享库,并开始使用自定义控件,而不用担心修复常见控件和样式的问题。这可能吗?