Изучаю Lazarus (пока под Windows). Столкнулся с обработкой сообщений. Сделал так:
- Код: Выделить всё
var PrevWndProc: WNDPROC;
...
function WndCallback(Ahwnd: HWND; uMsg: UINT; wParam: WParam; lParam: LParam): LRESULT; stdcall;
begin
if (uMsg = WM_CLIPBOARDUPDATE)
then
begin
FormViewer.WMDrawClipboard;
Exit;
end;
result := CallWindowProc(PrevWndProc, Ahwnd, uMsg, wParam, lParam);
end;
procedure TFormViewer.FormCreate(Sender: TObject);
begin
PrevWndProc := Windows.WNDPROC(SetWindowLong(Handle, GWL_WNDPROC, PtrInt(@WndCallback)));
end;
procedure TFormViewer.WMDrawClipboard;
begin
// здесь я работаю с буфером обмена
end;
Вроде работает, но в MSDN написано: If an application processes this message, it should return zero.
Объясните, где и как мне вернуть этот ноль?
И что будет, если этого не сделать?
Спасибо.