c#2.0 WinApp中的多个图标

c#2.0 WinApp中的多个图标,c#,winapi,icons,C#,Winapi,Icons,我的.NET2.0WinForms应用程序有一个小问题。 我想在应用程序中嵌入几个不同的图标 还有其他要求: 必须是自动重建的 ms-build;使用外部gui应用程序 因为准备是不允许的 应用程序必须包含versioninfo 嵌入多个图标后,我想注册应用程序文档/扩展文件的两个文件关联 [Registry] ... Root: HKCR; Subkey: "MyFileExt\DefaultIcon"; ValueType: string; ValueName: ""; ValueDat

我的.NET2.0WinForms应用程序有一个小问题。 我想在应用程序中嵌入几个不同的图标

还有其他要求:

  • 必须是自动重建的 ms-build;使用外部gui应用程序 因为准备是不允许的
  • 应用程序必须包含versioninfo
嵌入多个图标后,我想注册应用程序文档/扩展文件的两个文件关联

[Registry]
...
Root: HKCR; Subkey: "MyFileExt\DefaultIcon"; ValueType: string; ValueName: ""; ValueData: "{app}\MyApp.exe,2"
其中“2”是图标索引

我知道我需要使用老式的Win32资源文件

我还发现,如果使用VisualStudio2005,可以添加“本机资源文件”,但它在2008年已经不存在了


是否可以满足所有这些要求?如果可以,如何满足?

与2005年一样,您可以将图标添加到资源中(通过项目属性)。完成此操作后,转到您在project explorer中添加的图标。每个图标都有一个BuildAction属性,说明如何存储和利用该资源


我认为您需要的是BuildAction属性的EmbeddedResource值。

与2005年一样,您可以将图标添加到资源中(通过项目属性)。完成此操作后,转到您在project explorer中添加的图标。每个图标都有一个BuildAction属性,说明如何存储和利用该资源


我认为您要查找的是BuildAction属性的EmbeddedResource值。

新建WinForms应用程序->在解决方案资源管理器中展开属性->双击Resources.resx->单击添加资源(下拉列表还包括添加现有资源)

您现在应该可以在可视化设计器中或在使用Properties.Resources的代码中使用它们。[此处是您的资源名称]


希望对您有所帮助。

新建WinForms应用程序->在解决方案资源管理器中展开属性->双击Resources.resx->单击添加资源(下拉列表还包括添加现有资源)

您现在应该可以在可视化设计器中或在使用Properties.Resources的代码中使用它们。[此处是您的资源名称]


希望有帮助。

当我需要多个图标时,我将png/bmp(或任何图像类型)作为图像资源嵌入到应用程序中。转到Visual Studio中的项目->属性->资源

在代码中,您可以在运行时执行以下操作:

buttonPlay.Image = Properties.Resources.Navigation_Media_Pause;


假设您将这两个图像资源称为“导航\媒体\暂停”和“导航\媒体\播放”。

当我需要多个图标时,我将png/bmp(或任何图像类型)作为图像资源嵌入到应用程序中。转到Visual Studio中的项目->属性->资源

在代码中,您可以在运行时执行以下操作:

buttonPlay.Image = Properties.Resources.Navigation_Media_Pause;


假设您调用了两个图像资源“Navigation\u Media\u Pause”和“Navigation\u Media\u Play”。

编译应用程序,然后使用visual studio打开.exe,然后可以添加所需的所有图标


在c#中也可以使用win32资源文件,但我目前找不到类似的方法编译应用程序,然后用visual studio打开.exe,然后可以添加所需的所有图标


C++中的Win32资源文件也可以做一些事情,但是我找不到LIK,因为现在我把所有图标都放到了独立的Win32 C++*.DLL中。


它更具吸引力,我不需要用Voice Onnf/Win32资源来做任何技巧。

< P>我决定把所有图标放在单独的老学校Win32 C++ ++中。
它更方便,而且我不需要对versioninfo/win32resources执行任何操作。

该解决方案实际上非常简单,尽管它要求我回想我第一次遇到RC文件时的情景

在纯文本文件中,可以编写以下内容

#include <windows.h>

// The following is some Win32 candy for
// -- the Windows styles in XP, Vista & 7
//    does the UAC too.
1 RT_MANIFEST "App.manifest"
// -- the versioning info, which we find usually in 
//    AssemblyInfo.cs, but we need to add this one
//    because including Win32 resources overrides the .cs
//    file!
VS_VERSION_INFO VERSIONINFO
FILEVERSION     1,0,0,0
PRODUCTVERSION  1,0,0,0
FILEFLAGSMASK   VS_FFI_FILEFLAGSMASK
FILEFLAGS       VS_FF_DEBUG
FILEOS          VOS__WINDOWS32
FILETYPE        VFT_DLL
FILESUBTYPE     VFT2_UNKNOWN
BEGIN
    BLOCK "StringFileInfo"
    BEGIN
        BLOCK "040904E4" // en-US/cp-1252
        BEGIN
            VALUE "CompanyName",      "My Company"
            VALUE "ProductName",      "My C# App"
            VALUE "ProductVersion",   "1.0.0.0"
        END
    END
        BLOCK "VarFileInfo"
        BEGIN
            VALUE "Translation", 0x409, 1252 // en-US in ANSI (cp-1252)
        END
    END
END

// And now the icons.
// Note that the icon with the lowest ID
// Will be used as the icon in the Explorer.
101 ICON "Icon1.ico"
102 ICON "Icon2.ico"
103 ICON "Icon3.ico"
编译您的项目并在资源管理器中查看,信息和图标应该在那里

CSC编译器还提供了一个
/win32res
开关,用于将
.res
文件嵌入到应用程序中


希望这有帮助

这个解决方案实际上相当简单,尽管它要求我回想我第一次遇到RC文件时的情景

在纯文本文件中,可以编写以下内容

#include <windows.h>

// The following is some Win32 candy for
// -- the Windows styles in XP, Vista & 7
//    does the UAC too.
1 RT_MANIFEST "App.manifest"
// -- the versioning info, which we find usually in 
//    AssemblyInfo.cs, but we need to add this one
//    because including Win32 resources overrides the .cs
//    file!
VS_VERSION_INFO VERSIONINFO
FILEVERSION     1,0,0,0
PRODUCTVERSION  1,0,0,0
FILEFLAGSMASK   VS_FFI_FILEFLAGSMASK
FILEFLAGS       VS_FF_DEBUG
FILEOS          VOS__WINDOWS32
FILETYPE        VFT_DLL
FILESUBTYPE     VFT2_UNKNOWN
BEGIN
    BLOCK "StringFileInfo"
    BEGIN
        BLOCK "040904E4" // en-US/cp-1252
        BEGIN
            VALUE "CompanyName",      "My Company"
            VALUE "ProductName",      "My C# App"
            VALUE "ProductVersion",   "1.0.0.0"
        END
    END
        BLOCK "VarFileInfo"
        BEGIN
            VALUE "Translation", 0x409, 1252 // en-US in ANSI (cp-1252)
        END
    END
END

// And now the icons.
// Note that the icon with the lowest ID
// Will be used as the icon in the Explorer.
101 ICON "Icon1.ico"
102 ICON "Icon2.ico"
103 ICON "Icon3.ico"
编译您的项目并在资源管理器中查看,信息和图标应该在那里

CSC编译器还提供了一个
/win32res
开关,用于将
.res
文件嵌入到应用程序中

希望这有帮助