首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Visual-C++中My.Resources的等价物是什么?

Visual-C++中My.Resources的等价物是什么?
EN

Stack Overflow用户
提问于 2011-07-01 04:56:36
回答 2查看 776关注 0票数 0

我需要迭代项目中的所有资源,并基本上输出它们的名称。这是我用VB做的。但是我不知道VC++中My.Resources.ResourceManager的等价物是什么。

这是VB代码。

代码语言:javascript
复制
Dim objResourceManager As Resources.ResourceManager = My.Resources.ResourceManager
Dim objResourceSet As Resources.ResourceSet = objResourceManager.GetResourceSet(CultureInfo.CurrentCulture, True, True)
Dim iterator As IDictionaryEnumerator = objResourceSet.GetEnumerator()

Private Sub go()
    Dim s As String = iterator.Key
    Debug.WriteLine(s)
End Sub

Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click

    If iterator.MoveNext Then
        go()
    Else
        iterator.Reset()
        If iterator.MoveNext Then
            go()
        Else
            Throw New Exception("No elements to display")
        End If
    End If
End Sub

这是我在VC++的距离。

代码语言:javascript
复制
private:
        Resources::ResourceManager^ rmgnr;
        Resources::ResourceSet^ rSet;
    public:
        Form1(void)
        {

            rmgnr = gcnew System::Resources::ResourceManager(L"Resources ProjectCPP",Reflection::Assembly::GetExecutingAssembly());
            //This is the problem as I can't find the equivalent in c++
            rSet = rmgnr->GetResourceSet(CultureInfo::CurrentCulture,true,true);

请帮我弄清楚这件事。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2011-07-01 06:36:48

我想你只是想:

代码语言:javascript
复制
rmgnr = gcnew System::Resources::ResourceManager(GetType());
票数 2
EN

Stack Overflow用户

发布于 2011-07-01 05:04:45

对于非托管C++,您可以使用类似以下内容:

代码语言:javascript
复制
HRSRC hResInfo = FindResource(hInstance, MAKEINTRESOURCE(resourceId), type);
HGLOBAL hRes = LoadResource(hInstance, hResInfo);
LPVOID memRes = LockResource(hRes);
DWORD sizeRes = SizeofResource(hInstance, hResInfo);

您需要更改类型和resourceId以匹配您的资源。不确定它是图像还是图标,也不确定是哪种资源,但您可以使用以下内容:

代码语言:javascript
复制
FindResource(hInstance, MAKEINTRESOURCE(bitmapId), _T("PNG"));

对于托管C++,请尝试执行类似以下操作:

代码语言:javascript
复制
Bitmap *MyBitmap;
String *Msg;
Reflection::Assembly *MyAssembly;
IO::Stream *ResourceStream;

MyAssembly = System::Reflection::Assembly::GetExecutingAssembly();
ResourceStream = MyAssembly->GetManifestResourceStream(ImageName);

if (ResourceStream != NULL)
{
    MyBitmap = new Bitmap(ResourceStream);
    Msg = String::Format("GetIcon: {0}, OK", ImageName);
}
else
    Msg = String::Format("GetIcon: {0}, Failed", ImageName);

// MyBitmap countains your resource

您需要将ImageName替换为您试图获取的资源的名称。再说一次,我假设这是你想要获取的图片资源。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/6541016

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档