Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > C/C++: Для новичков > строка из ресурса


Автор: WinAx 9.3.2009, 01:03
Есть программа на ВБ, вызывает функцию из сишной библиотеки. при ошибке в функции из библиотеки должен вызывать меседжбокс, строка сообщения сохраняется в ресурсах этой библиотеки... smile  через CString загрузить не вышло... LoadString(API) тоже...
В чем проблема?

P.S. Если библиотека не загружается LoadLibrary, а просто декларируется в ВБ, то у нее есть  hInstance?

Автор: 586 9.3.2009, 01:08
Цитата(WinAx @  9.3.2009,  01:03 Найти цитируемый пост)
P.S. Если библиотека не загружается LoadLibrary, а просто декларируется в ВБ, то у нее есть  hInstance? 

hInstance (базовый адрес загруженного модуля) можно узнать с помощью функции GetModuleHandle.

Автор: WinAx 9.3.2009, 01:25
Цитата(586 @  9.3.2009,  01:08 Найти цитируемый пост)
hInstance (базовый адрес загруженного модуля) можно узнать с помощью функции GetModuleHandle. 


В случаи с LoadString, я делал так:

Код

LoadString(GetModuleHandle(0),ID, Buffer, BufferLen)


в результате Buffer пуст

Автор: GoldFinch 9.3.2009, 01:39
GetModuleHandle(0) - это хендл .exe

Автор: WinAx 9.3.2009, 02:18
Цитата(GoldFinch @  9.3.2009,  01:39 Найти цитируемый пост)
GetModuleHandle(0) - это хендл .exe 


Даже если я вызываю функцию из длл?

Ну то как это делать? Просто через CString никак нельзя?

Автор: GoldFinch 9.3.2009, 11:11
GetModuleHandle("xxx.dll")

Автор: WinAx 9.3.2009, 16:56
Всем спасибо. smile 
Может кому интересно, вот:

Код

  AfxSetResourceHandle(GetModuleHandle("test.dll"));
  CString tStr;
  tStr.LoadString(idMsg);
  MessageBox(NULL,tStr,MSG_CAPTION,MB_ICONSTOP);

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)