03.12.2012, 22:27
|
|
.
|
|
Регистрация: 18.05.2011
Адрес: Омск
Сообщения: 3,970
Версия Delphi: 3,5,7,10,12,XE2
Репутация: выкл
|
|
Есть - subclassing. Не желает ProgressBar по-другому ловиться. Classes здесь не причём, размер будет минимальный.
Вот пример
Код:
var
hpbPrev : Pointer;
...
function pbWndProc(Wnd : HWND; Msg, wParam, lParam : Longint) : Longint; stdcall;
begin
Result := CallWindowProc(hpbPrev, Wnd, Msg, wParam, lParam);
case Msg of
WM_LBUTTONDOWN : MessageBox(Wnd, 'ProgressBar1Click', 'Click', MB_OK);
end;
end;
...
function WindowProc(Wnd: HWnd; Message, wParam, lParam : Integer): Integer; stdcall;
begin
Result := 0;
case Message of
WM_CREATE :
begin
ProgressBar1 := CreateWindow('msctls_progress32', 'progressbar', WS_VISIBLE or WS_CHILD or WS_BORDER,
48, 320, 150, 18, Wnd, 0, hInstance, NIL);
// Subclass ListView
hpbPrev := Pointer(GetWindowLong(ProgressBar1, GWL_WNDPROC));
SetWindowLong(ProgressBar1, GWL_WNDPROC, Longint(@pbWndProc));
end;
...
else
Result := DefWindowProc(Wnd, Message, wParam, lParam);
end;
end;
__________________
Je venus de nulle part
55.026263 с.ш., 73.397636 в.д.
|