Форум: "Начинающим";
Текущий архив: 2009.08.02;
Скачать: [xml.tar.bz2];
ВнизКак лучше передать ссылку на экземпляр класса? Найти похожие ветки
← →
Andy BitOff © (2009-06-09 13:50) [0]Точнее даже не как лучше, а как вообще это сделать =)
TMyKeyPressEvent = procedure(Sender: TObject; var Key: Word; Shift: TShiftState) of object;
type
TMyClass = class
private
FonKeyPress: TMyKeyPressEvent;
procedure PressKey(var aMsg: TMsg);
public
property onKeyPress: TMyKeyPressEvent read FonKeyPress write FonKeyPress;
implementation
function WndProc(Wnd: HWND; message: UINT; wParam: Integer; lParam: Integer) : Integer; stdcall;
begin
case message of
WM_KEYDOWN: begin
TMyClass(Здесь_должна_быть_ссылка_на_нужный_экземпляр_класса).PressKey(msg);
end;
else
result := DefWindowProc(Wnd, message, wParam, lParam);
end;
end;
procedure TMyClass.PressKey(var aMsg: TMsg);
var
a: Word;
begin
if Assigned(FonKeyPress) then begin
a := aMsg.lParam;
FonKeyPress(Self, a, KeysToShiftState(aMsg.wParam));
aMsg.lParam := a;
end;
end;
Код в общих чертах...
Понятно, что, если экземпляров несколько, то обработчик сообщений должен знать экземпляр.
Сумбурно как-то... =(
← →
Медвежонок Пятачок © (2009-06-09 13:53) [1]если их много, передавать через лист в lparam or wparam
← →
Andy BitOff © (2009-06-09 14:02) [2]
> Медвежонок Пятачок © (09.06.09 13:53) [1]
Как? Для таймера я так и делаю, но там при установке таймера можно задать. А для WM_KEYDOWN как?
← →
Медвежонок Пятачок © (2009-06-09 14:07) [3]не понял я чего как
← →
Andy BitOff © (2009-06-09 14:12) [4]
> Медвежонок Пятачок © (09.06.09 14:07) [3]
> не понял я чего как
Как "передавать через лист в lparam or wparam"? Я же сам не шлю сообщения? И что такое "лист" в этом контексте.
← →
Медвежонок Пятачок © (2009-06-09 14:15) [5]если не сам шлешь, то и едиснтвенный экземпляр тебе не передать.
если же сам, то в одном из параметров передавай ссылку на tlist а уже в него добавляй экземпляры.
если оба параметра заняты, можно создать рекорд из трех полей.
в два первых перенести оригинальные параметры, в третий - ссылку на тлист со списком экземпляров
← →
Игорь Шевченко © (2009-06-09 14:16) [6]1. завести глобальную переменную
2. сохранить экземпляр класса в GWL_USERDATA у hwnd при обработке WM_CREATE
← →
Andy BitOff © (2009-06-09 14:21) [7]
> Игорь Шевченко © (09.06.09 14:16) [6]
> 1. завести глобальную переменную
И как нас это спасет?
> 2. сохранить экземпляр класса в GWL_USERDATA у hwnd при
> обработке WM_CREATE
Посмотрю. Спасибо.
← →
Andy BitOff © (2009-06-09 14:32) [8]
> Игорь Шевченко © (09.06.09 14:16) [6]
> 2. сохранить экземпляр класса в GWL_USERDATA у hwnd при обработке WM_CREATE
Спасибо. Работает.
← →
Игорь Шевченко © (2009-06-09 15:06) [9]
> И как нас это спасет?
также, как GWL_USERDATA
Страницы: 1 вся ветка
Форум: "Начинающим";
Текущий архив: 2009.08.02;
Скачать: [xml.tar.bz2];
Память: 0.46 MB
Время: 0.005 c