GetMsg

Programming Far Manager plugins

GetMsg

Функция GetMsg возвращает строку сообщения из языкового файла. Настоятельно рекомендуется использовать эту функцию вместо предопределённого текста в ваших программах, поскольку это позволит локализовать ваш плагин и переключать языки в Far Manager и плагине одновременно.
const wchar_t* WINAPI GetMsg(
  const GUID *PluginId,
  intptr_t MsgId
);

Параметры

PluginId
Указатель на GUID плагина (для вашего плагина, GUID должен быть таким же, что и в поле GlobalInfo.Guid функции GetGlobalInfoW).
MsgId
Номер строки сообщения в файле сообщений.

Возвращаемое значение

Эта функция возвращает адрес запрашиваемой строки сообщения.

ВНИМАНИЕ! ВНИМАНИЕ!

  • Не сохраняйте у себя этот адрес, всегда запрашивайте его заново. Если пользователь сменит язык интерфейса, адрес станет недействительным, со всеми вытекающими последствиями.

Примечание

Все *.lng файлы в каталоге с плагином являются языковыми файлами. Far Manager выбирает необходимый *.lng файл в соответствии с установленным языком. При первом использования функции GetMsg все сообщения загружаются в память, поэтому при последующих вызовах этой функции доступ к сообщениям производится быстрее и вам не надо сохранять полученные строки сообщений в промежуточные буферы.

Пример

Во всех примерах, как вы могли заметить, используется следующая функция:
// {B076F0B0-90AE-408c-AD09-491606F09435}
DEFINE_GUID(MainGuid, 0xb076f0b0, 0x90ae, 0x408c, 0xad, 0x9, 0x49, 0x16, 0x6, 0xf0, 0x94, 0x35);

const wchar_t *GetMsg(intptr_t MsgId)
{
  return(Info.GetMsg(&MainGuid;,MsgId));
}
Причём, Info определяется как глобальная переменная:
struct PluginStartupInfo Info;
...а инициализируется она в функции SetStartupInfoW:
void WINAPI SetStartupInfoW(struct PluginStartupInfo *Info)
{
  ...
  ::Info=*Info;
  ...
}
Смотрите также: