Может кто-нибудь помочь мне загрузить значения в строковую таблицу vc ++ MFC программно - PullRequest
1 голос
/ 16 июля 2011

Может кто-нибудь помочь мне загрузить значения в STRINGTABLE в vc ++ программно?Я использую MFC.

Ответы [ 4 ]

3 голосов
/ 16 июля 2011

У вас может быть собственный ресурс, куда вы бы поместили текстовый файл.Во время выполнения считывайте этот текстовый файл как ресурс.

void GetResourceAsString(int nResourceID, CStringA &strResourceString)
{
    HRSRC hResource = FindResource(NULL, MAKEINTRESOURCE(nResourceID),  L"DATA");

    HGLOBAL hResHandle = LoadResource(NULL, hResource);

    // Resource is ANSII
    const char* lpData = static_cast<char*> ( LockResource(hResHandle) );    
    strResourceString.SetString(lpData, SizeofResource(NULL, hResource));

    FreeResource(hResource);
}

Где DATA будет вашим пользовательским типом ресурса, а nResource будет идентификатором ресурса в DATA типе ресурса.Конечно, вы можете выбрать другое имя, а не «ДАННЫЕ».

1 голос
/ 19 июля 2011

Вы можете загружать строки непосредственно из таблицы строк, используя метод LoadString, я использую его все время.

http://msdn.microsoft.com/en-us/library/ms647486(v=vs.85).aspx

CStringW myString;
myString.LoadString(RESOURCE_ID); //where RESOURCE_ID is the Stringtable 
                                  //entry ID

* РЕДАКТИРОВАТЬ: Спасибо за ввод этогоделает ответ намного лучше !!

0 голосов
/ 19 июля 2011

Трудно понять, что вы на самом деле просите, но я попробую ответить. Предполагается, что вы спрашиваете, как поместить строки в ресурсы, а не как читать существующий ресурс.

Файл .rc, содержащий ресурсы, может содержать директивы #include. Все, что вам нужно сделать, это записать текстовый файл, содержащий строки, которые вы хотите включить, а также директивы STRINGTABLE, BEGIN и END вместе с идентификатором каждой строки. Вам также следует создать файл .h, который определяет каждый из идентификаторов и включить его в .rc.

0 голосов
/ 16 июля 2011

Обычно вы определяете для каждой строки константу, которая включается в вашу программу, а также в файл ресурсов.Затем строковый ресурс помещается в секцию .rsrc вашего исполняемого файла, и строки могут быть извлечены с помощью LoadString () путем присвоения определенной константе для этой строки имени.ресурсы вашего исполняемого файла во время выполнения?Вы можете сделать это, прочитав вашу память процесса в соответствующей записи в PE-структуре.Вы можете найти запись таблицы строк в PE-структуре, если вы нажмете http://msdn.microsoft.com/en-us/windows/hardware/gg463119.aspx в разделе «Таблица каталогов ресурсов» или загляните в файлы включения winapi, которые определяют структуры PE.

...