微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

改变基于Windows版本的控件的视觉风格

我期待有vista / win7使用Aero风格的窗口,而XP用户使用正常的窗口风格(如何得到Windows XP stlye而不是win95风格btw?)

这个想法是这样的:

OsveRSIONINFOEX osvi; osvi.dwOsversionInfoSize = sizeof(OsveRSIONINFOEX); GetVersionEx((OsveRSIONINFO*)&osvi); if (osvi.dwMajorVersion > 5) { #pragma comment(linker,"/manifestdependency:"type='win32' " "name='Microsoft.Windows.Common-Controls' " "version='6.0.0.0' " "processorArchitecture='x86' " "publicKeyToken='6595b64144ccf1df' " "language='*' " """) }

现在,不pipeif语句是真还是假,#pragma都会被执行,我猜这就是#pragma的工​​作方式。 当然还有一些其他的方式来得到这个工作(像#ifndef #define … #endif我猜)

干杯

如何直接与硬件交互?

有没有办法确定一个Linux的PID是否暂停?

如何在C / C ++中以编程方式在外部USB HD上启用“更好的性能

有没有可选的标签控制?

如何通过C ++程序在Windows Server 2008/2012上初始化磁盘

在listBoxes vba中获得一致的伪列

下拉select控制 – Windows 8 Metro – XAML

停止并使用C ++在Linux中重新开始运行进程

设置ALSAstream的音量

C#Windows窗体:循环浏览dynamic创build的文本框,并检查是否已更改文本

您正在编译时间评估杂注与运行时代码的执行。 显然这是行不通的。

可以在“PutYourProgramNameHere.exe.manifest”文件中保留应用程序的清单。 因此,如果您需要XP和Vista / Win7的不同清单,则可以在目标计算机上安装应用程序时安装不同的清单文件。 即您的安装程序检查操作系统版本并安装匹配清单。

您可以使用Activation Context API函数来执行此操作。 要求是:

使用LoadLibrary & GetProcAddress实际加载有问题的API函数,因为它们在NT 5.1之前不存在

将包含comctl 6依赖项的清单嵌入资源ID> 16的资源中,或者将其作为磁盘上的文件

此示例代码假定清单被嵌入为RT_MANIFEST资源,其ID为17.TestOsversion()是您决定是否要使用蒙版窗口的函数

ACTCTX actx = {0}; actx.cbSize = sizeof(ACTCTX); actx.dwFlags = ACTCTX_FLAG_RESOURCE_NAME_VALID | ACTCTX_FLAG_HMODULE_VALID; actx.lpResourceName = MAKEINTRESOURCE(17); actx.hmodulee = GetmoduleeHandle(NULL); // assumes the manifest is exe embedded. HANDLE hactx = INVALID_HANDLE_VALUE; if(TestOsversion()) hactx = CreateActCtx(&actx); ULONG_PTR actxCookie = NULL; if (hactx != INVALID_HANDLE_VALUE) ActivateActCtx(hactx,&actxCookie); // Now,with the activation context active,create the dialog Box // or window or whatever. HWND hwndDialog = CreateDialogBoxParam(...); // and pop the context. It doesn't matter if the dialog still exists,the // ctl6 dll is Now loaded and serving requests. if (hactx != INVALID_HANDLE_VALUE) DeactivateActCtx(0,actxCookie);

显然,为了使这个工作,v6公共控制不能在进程认清单。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。

相关推荐