[Setup]
AppName=MyApp
AppVerName=MyApp
DefaultDirname={pf}\MyApp
[code]
#ifdef UNICODE
#define A "W"
#else
#define A "A"
#endif
const
GWL_WNDPROC = -4;
WM_MOUSEWHEEL = $020A;
type
LPARAM = Integer;
WPARAM = Integer;
LRESULT = Integer;
TFNWndProc = Integer;
var
WindowProc: Longint;
function SetWindowLong(hWnd: HWND; nIndex: Integer; dwNewLong: Longint): Longint; external 'SetWindowLong{#A}@user32.dll stdcall';
function CallWindowProc(lpPrevWndFunc: TFNWndProc; hWnd: HWND; Msg: UINT; wParam: WPARAM; lParam: LPARAM): LRESULT; external 'CallWindowProc{#A}@user32.dll stdcall';
function Proc(hWnd: HWND; Msg: UINT; wParam: WPARAM; lParam: LPARAM): LRESULT;
begin
case Msg of WM_MOUSEWHEEL:
begin
Msg := 0;
end;
end;
Result := CallWindowProc(WindowProc, hWnd, Msg, wParam, lParam);
end;
procedure InitializeWizard();
begin
WindowProc := SetWindowLong(WizardForm.ComponentsList.Handle, GWL_WNDPROC, CallbackAddr('Proc'));
end;
procedure DeinitializeSetup();
begin
SetWindowlong(WizardForm.ComponentsList.Handle, GWL_WNDPROC, WindowProc);
end;
а без этого ни как не получится?Ekspoint, для первого, нужно отключить прокрутку колесиком.
Код:[Setup] AppName=MyApp AppVerName=MyApp DefaultDirname={pf}\MyApp [code] #ifdef UNICODE #define A "W" #else #define A "A" #endif const GWL_WNDPROC = -4; WM_MOUSEWHEEL = $020A; type LPARAM = Integer; WPARAM = Integer; LRESULT = Integer; TFNWndProc = Integer; var WindowProc: Longint; function SetWindowLong(hWnd: HWND; nIndex: Integer; dwNewLong: Longint): Longint; external 'SetWindowLong{#A}@user32.dll stdcall'; function CallWindowProc(lpPrevWndFunc: TFNWndProc; hWnd: HWND; Msg: UINT; wParam: WPARAM; lParam: LPARAM): LRESULT; external 'CallWindowProc{#A}@user32.dll stdcall'; function Proc(hWnd: HWND; Msg: UINT; wParam: WPARAM; lParam: LPARAM): LRESULT; begin case Msg of WM_MOUSEWHEEL: begin Msg := 0; end; end; Result := CallWindowProc(WindowProc, hWnd, Msg, wParam, lParam); end; procedure InitializeWizard(); begin WindowProc := SetWindowLong(WizardForm.ComponentsList.Handle, GWL_WNDPROC, CallbackAddr('Proc')); end; procedure DeinitializeSetup(); begin SetWindowlong(WizardForm.ComponentsList.Handle, GWL_WNDPROC, WindowProc); end;
Alloc, установить компоненту расширенный стиль WS_EX_COMPOSITED:При прокручивании при помощи мыши фоновое изображение формы на мгновение деформируется в зоне CheckListBox. А если в ручную перетащить ползунок то все ок. Как можно решить?
with WizardForm.ComponentsList do
SetWindowLong(Handle, GWL_EXSTYLE, GetWindowLong(Handle, GWL_EXSTYLE) or WS_EX_COMPOSITED);