我有一个可以使用以下 MFC 代码显示对话框窗口的 DLL:
void ShowMyDialog()
{
BOOL bInitted = SUCCEEDED(::CoInitializeEx(NULL, COINIT_APARTMENTTHREADED | COINIT_DISABLE_OLE1DDE));
INITCOMMONCONTROLSEX InitCtrls;
InitCtrls.dwSize = sizeof(InitCtrls);
InitCtrls.dwICC = ICC_WIN95_CLASSES;
InitCommonControlsEx(&InitCtrls);
//InitCommonControls(); //Tried also with just this call
AfxEnableControlContainer();
HMODULE hDll = NULL;
if(GetModuleHandleEx(GET_MODULE_HANDLE_EX_FLAG_FROM_ADDRESS | GET_MODULE_HANDLE_EX_FLAG_UNCHANGED_REFCOUNT,
(LPCWSTR) ShowMyDialog,
&hDll) &&
hDll)
{
AfxSetResourceHandle(hDll);
CMyDialog dl; //Derived from CDialog
dl.DoModal();
}
if(bInitted)
::CoUninitialize();
}
这可行,但显示的对话框没有启用视觉样式:
我找到了这篇关于如何为 DLL 启用视觉样式的文章。所以我添加了带有建议清单内容的资源文件:
并给它资源 ID 123:
但仍然没有雪茄。我在这里想念什么?