У меня нет опыта работы с C++ и Win API, так что извините, если этот вопрос будет нубским. У меня есть DLL, в которой я создаю некоторые компоненты, например MessageBox
. Я добавил прагматический комментарий, чтобы включить визуальные стили, и он не работает (и не должен, как я знаю из этого ответа: стиль Windows 7 для поля со списком на панели инструментов 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
.
ISOLATION_AWARE_ENABLED
. - person David Heffernan   schedule 12.08.2014GetCurrentActCtx
, это должно быть ошибка документации. Функция возвращаетHANDLE
в контекст активации. Вы можете использовать этот дескриптор сQueryActCtxW
иQueryActCtxSettingsW
для запроса контекстной информации. - person Alexey Ivanov   schedule 12.08.2014