我没有 C++ 和 Win API 方面的经验,如果这个问题是 nooby,我很抱歉。例如,我有 DLL 在其中创建一些组件MessageBox
。我添加了编译指示注释以启用视觉样式,但它不起作用(我不应该从这个答案中知道:windows 7 style for combobox on internet explorer工具栏,怎么样?
dll代码(省略导出等):
#include "stdafx.h"
#include "my-dll.h"
#include <Windows.h>
#pragma comment(linker,"\"/manifestdependency:type='win32' name='Microsoft.Windows.Common-Controls' version='6.0.0.0' processorArchitecture='*' publicKeyToken='6595b64144ccf1df' language='*'\"")
MYDLL_API int fnmydll(void)
{
MessageBox(NULL, L"Message", NULL, 0);
return 42;
}
然后我从我的应用程序中调用这个 dll 函数:
#include <iostream>
#include <Windows.h>
#include "my-dll.h"
int WinMain(HINSTANCE hInstance,
HINSTANCE hPrevInstance,
LPSTR lpCmdLine,
int nCmdShow)
{
fnmydll();
return 0;
}
我有我的消息框,但没有视觉样式。据我了解,我应该在调用我的 dll 时激活上下文,但 MSDN 没有如何执行此操作的示例。您能否给我这样的例子,或者至少更详细地解释发生了什么?因为我什至无法理解为什么函数BOOL GetCurrentActCtx(_Out_ HANDLE *lphActCtx);
接收指针ACTCTX
但具有某种HANDLE
类型的签名。