Что эквивалентно My.Resources в Visual-C ++? - PullRequest
0 голосов
/ 01 июля 2011

Мне нужно перебрать все ресурсы в проекте и в основном вывести их имена. Я сделал это в VB. Но я не могу понять, что такое эквивалент My.Resources.ResourceManager в VC ++.

Вот код VB.

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 ++.

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);

Пожалуйста, помогите мне разобраться.

Ответы [ 2 ]

2 голосов
/ 01 июля 2011

Я думаю, вы просто хотите:

rmgnr = gcnew System::Resources::ResourceManager(GetType());
0 голосов
/ 01 июля 2011

Вы можете использовать что-то вроде следующего для неуправляемого C ++:

HRSRC hResInfo = FindResource(hInstance, MAKEINTRESOURCE(resourceId), type);
HGLOBAL hRes = LoadResource(hInstance, hResInfo);
LPVOID memRes = LockResource(hRes);
DWORD sizeRes = SizeofResource(hInstance, hResInfo);

Вам потребуется изменить тип и resourceId в соответствии с вашим ресурсом.Не уверен, что это изображение или значок или какой-то ресурс, но вы бы использовали что-то вроде:

FindResource(hInstance, MAKEINTRESOURCE(bitmapId), _T("PNG"));

Для Managed C ++ попробуйте что-то вроде следующего:Вам нужно будет заменить ImageName на имя вашего ресурса, который вы пытаетесь получить.Опять же, я предполагаю, что это ресурс изображения, который вы пытаетесь получить.

...