Вниз
Скачать: CL | DM;

Как получить название кнопки?   Найти похожие ветки 

← →
}{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 вся ветка

Скачать: CL | DM;



Память: 0.46 MB
Время: 0.008 c
14-50463
Andrey Filatow
2003-05-29 20:55
2003.06.16
Rave report


8-50407
grei
2003-03-03 20:15
2003.06.16
gif, gif, gif, gif, gif, gif...


14-50515
reticon
2003-05-31 14:59
2003.06.16
Unix и C - первоапрельская шутка?


1-50376
stone
2003-06-04 10:41
2003.06.16
Выравнивание объектов


4-50569
Teetos
2003-04-16 09:17
2003.06.16
Изменение иконки в исполняемом модуле




   Наверх