سؤال

بحسب ال مستندات:

"إذا كنت تريد أن يستخدم تطبيقك COMCTL32.DLL الإصدار 6 ، فيجب عليك إضافة بيان تطبيق أو التوجيه المترجم لتحديد أن الإصدار 6 يجب استخدامه إذا كان متاحًا ".

لاحظ المنطق أو أعلاه؟ إذن ما هو هذا التوجيه المترجم الغامض؟

لقد حصلت على تطبيق Win32 C ++ الأصلي الذي يوجد بالكامل في ملف .CPP واحد. لا توجد ملفات موارد وملفات واضحة ، وما إلى ذلك. أود الاحتفاظ بها على هذا النحو ، لكنني أود أيضًا استخدام الأنماط المرئية.

هل كانت مفيدة؟

المحلول

إذا كنت تستخدم Visual Studio ، فيمكنك إضافة هذا الخط إلى stdafx.cpp على سبيل المثال:

#pragma comment(linker,"\"/manifestdependency:type='win32' name='Microsoft.Windows.Common-Controls' version='6.0.0.0' processorArchitecture='*' publicKeyToken='6595b64144ccf1df' language='*'\"")

نصائح أخرى

هناك بالفعل طريقة ثالثة مع لا يتجلى على الإطلاق, ، على الرغم من أنها اختراق إلى حد ما:

#include <windows.h>

// NOTE: It is recommended that you delay-load ComCtl32.dll (/DelayLoad:ComCtl32.dll)
// and that you ensure this code runs before GUI components are loaded.
// Otherwise, you may get weird issues, like black backgrounds in icons in image lists.
ULONG_PTR EnableVisualStyles(VOID)
{
    TCHAR dir[MAX_PATH];
    ULONG_PTR ulpActivationCookie = FALSE;
    ACTCTX actCtx =
    {
        sizeof(actCtx),
        ACTCTX_FLAG_RESOURCE_NAME_VALID
            | ACTCTX_FLAG_SET_PROCESS_DEFAULT
            | ACTCTX_FLAG_ASSEMBLY_DIRECTORY_VALID,
        TEXT("shell32.dll"), 0, 0, dir, (LPCTSTR)124
    };
    UINT cch = GetSystemDirectory(dir, sizeof(dir) / sizeof(*dir));
    if (cch >= sizeof(dir) / sizeof(*dir)) { return FALSE; /*shouldn't happen*/ }
    dir[cch] = TEXT('\0');
    ActivateActCtx(CreateActCtx(&actCtx), &ulpActivationCookie);
    return ulpActivationCookie;
}

إذا كنت قد واصلت القراءة ، لكنت قد وجدت الاجابة:

إذا كنت تستخدم Microsoft Visual C ++ 2005 أو أحدث ، فيمكنك إضافة توجيه المترجم التالي إلى الكود المصدري بدلاً من إنشاء بيان يدوي. لقدرة على القراءة ، يتم تقسيم التوجيه إلى سطرين هنا.

#pragma comment(linker,"\"/manifestdependency:type='win32' name='Microsoft.Windows.Common-Controls' 
version='6.0.0.0' processorArchitecture='*' publicKeyToken='6595b64144ccf1df' language='*'\"")
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top