Re[4]: Точка или запятая? Русский или английский?
От: BaSergey Россия  
Дата: 16.04.03 06:55
Оценка:
Здравствуйте, SergH, Вы писали:

SH>Из MSDN про GetKeyboardLayout :


SH>The return value is the input locale identifier for the thread. The low word contains a language identifier for the input language and the high word contains a device handle for the physical layout of the keyboard.


GetKeyboardLayout действительно отслеживает изменения языка. Но GetLocaleInfo с его результатом работать отказывается. Вот, что я делаю для проверки:
function GetLocaleChar(Locale, LocaleType: Integer; Default: Char): Char;
var
  Buffer: array[0..1] of Char;
begin
  if GetLocaleInfo(Locale, LocaleType, Buffer, 2) > 0 then
    Result := Buffer[0] else
    Result := Default;
end;

  Application.MessageBox(PChar(format(
      'Lo=%4x; Hi=%4x; Char=[%s]',
    [LoWord(GetKeyboardLayout(0)), HiWord(GetKeyboardLayout(0)),
    GetLocaleChar(GetKeyboardLayout(0), LOCALE_SDECIMAL, 'D')])),
    'Info', mb_Ok or mb_IconInformation);


Результат работы GetLocaleChar всегда равен "D". А если ему дать результат чего-нибудь типа GetThreadLocale — все нормально, но результат не тот, что хотелось — постоянно то, что прописано в панели управления. Мне же нужен конкретно тот разделитель, который действует непосредственно сейчас, для текущего языка ввода.

Есть соображения?
ICQ 153965498
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.