Форум: "WinAPI";
Текущий архив: 2003.06.16;
Скачать: [xml.tar.bz2];
ВнизКак получить название кнопки? Найти похожие ветки
← →
}{enon (2003-04-17 17:32) [0]В общем, пишу игрушку. Нужно, чтобы управление можно было настраивать (в том числе, на CTRL и т.п.). Проблема в том, что функция GetKeyNameText, которая должна выдавать имя кнопки вызывает системную ошибку по некоторому адресу в user32.dll (!).
Вот код:
procedure Tsettings.keysKeyDown(Sender: TObject; var Key: Word; Shift: TShiftState);
var
s: string[20];
begin
getkeynametext(key,^s,20);
end;
Пробовал изменять тип s, но ничего не изменяется. Может кто-то знает, в чем дело? Заранее благодарен!
← →
Игорь Шевченко (2003-04-17 17:55) [1]procedure Tsettings.keysKeyDown(Sender: TObject; var Key: Word; Shift: TShiftState);
var
s: array [0..20] of char;
begin
getkeynametext(key,s,sizeof(s));
end;
← →
}{enon (2003-04-17 18:05) [2]Спасибо!
Если не трудно, не могли бы объяснить, что не так в моем коде - string это же и есть array of char, но управляемый?
← →
MBo (2003-04-17 18:06) [3]^s - что за дикость?
Обрабатывай WM_KEYDOWN сам:
var
s: array[0..20] of Char;
begin
getkeynametext(m.lparam,s,20);
caption:=s;
или разберись, как Key образуется из lparam
← →
}{enon (2003-04-17 18:25) [4]2 MBo
Это не дикость, а аналогия:
type PChar: ^Char (tooltip при наведении на PChar)
Млин... Не работает - в s помещается пустая строка (все символы нулевые)
← →
MBo (2003-04-17 18:40) [5]}{enon
Я дал рабочий пример. На всякий случай объявление:
procedure WMKeyDown(var m:TMessage); message WM_KeyDown;
← →
}{enon (2003-04-17 18:53) [6]Если обрабатывать это сообщение, то действительно все работает. Спасибо!
Страницы: 1 вся ветка
Форум: "WinAPI";
Текущий архив: 2003.06.16;
Скачать: [xml.tar.bz2];
Память: 0.45 MB
Время: 0.005 c