Winapi 如何将资源添加到我的D可执行文件中?如何嵌入清单?

Winapi 如何将资源添加到我的D可执行文件中?如何嵌入清单?,winapi,button,resources,manifest,d,Winapi,Button,Resources,Manifest,D,我尝试使用WinAPI在D中进行一些gui编程。我的问题是,为了解决我想在我的D应用程序中嵌入清单的问题,按钮看起来很难看。一旦我可以将资源包含到可执行文件中,我还应该能够根据需要手动添加清单 所以我的问题是:如何在VisualStudio上的D应用程序中包含资源?甚至有可能做到这一点吗?如果没有,还有其他方法可以让按钮看起来漂亮吗?有点难看,但它完成了任务,没有清单: auto enableVisualStyles() { TCHAR dir[MAX_PATH]; dir[Ge

我尝试使用WinAPI在D中进行一些gui编程。我的问题是,为了解决我想在我的D应用程序中嵌入清单的问题,按钮看起来很难看。一旦我可以将资源包含到可执行文件中,我还应该能够根据需要手动添加清单


所以我的问题是:如何在VisualStudio上的D应用程序中包含资源?甚至有可能做到这一点吗?如果没有,还有其他方法可以让按钮看起来漂亮吗?

有点难看,但它完成了任务,没有清单:

auto enableVisualStyles()
{
    TCHAR dir[MAX_PATH];
    dir[GetSystemDirectory(dir.ptr, dir.length)] = '\0';
    auto actCtx = ACTCTX(
        ACTCTX.sizeof, 0x0C, "shell32.dll", PROCESSOR_ARCHITECTURE_INTEL,
        0, dir.ptr, MAKEINTRESOURCE(124), null, HMODULE.init);
    ULONG_PTR ulpActivationCookie;
    return ActivateActCtx(CreateActCtx(actCtx), ulpActivationCookie);
}

请确保在程序启动时调用它一次。

我不熟悉dmd与Visual Studio的集成,但实现所需功能的一种方法是将编译后的.res文件添加到传递给dmd.exe的文件列表中。例如:

dmd.exe main.d manifest.res

我希望在VS集成中有某种方法可以将文件添加到IDE用于编译代码的dmd命令中。

检查此处的“VisualStyles”示例:


此外,“ThemedSimpleWakeUp”示例使用资源文件,而“ThemedWakeUp”动态启用视觉样式。

如果您不关心它实际上是一个“资源”,而只需要嵌入二进制文件中的文件中的数据块;查看“

查看使用dsss的旧项目:

这应该转化为:

dmd -JRES_PATH -L/rc:.\RES_PATH\MANIFEST_WHITHOUT_RES_EXT ...

根据问题,最好包括一个清单资源。@David如果它有效,对我来说没问题。我要试一试。:)@Mehrdad为了得到
ACTCTX
和其他类似符号的定义,您导入了什么?是否有一些用于d的公共完整winapi导入模块?请等待,直到您运行的Windows版本没有您在shell32.dll中ID 124处查找的资源。那你会后悔你的决定的。是的,我刚刚发现。这个神奇的数字从何而来?导入表达式对于处理一般资源非常有用。不幸的是,对于我的特殊问题,它们没有帮助。
dmd -JRES_PATH -L/rc:.\RES_PATH\MANIFEST_WHITHOUT_RES_EXT ...