(Co-Admin)
Registriert seit: 30. Mai 2002
Ort: Hamburg
13.920 Beiträge
Delphi 10.4 Sydney
|
Subclassing von TRichedit
2. Jan 2004, 19:14
Von unserem User "Assarbad":
Ermoeglicht es, dass im RichEdit nur noch gescrollt werden kann. Markieren und andere Dinge sind schlichtweg unmoeglich. (Getestet mit einem ReadOnly RichEdit).
Delphi-Quellcode:
function RichEditSubclassWndProc(
hwnd: HWND;
uMsg: UINT;
wParam: WPARAM;
lParam: LPARAM
): LRESULT; stdcall;
begin
case uMsg of
WM_MBUTTONDBLCLK,
WM_RBUTTONDBLCLK,
WM_LBUTTONDBLCLK,
WM_MBUTTONUP,
WM_RBUTTONUP,
WM_LBUTTONUP,
WM_MBUTTONDOWN,
WM_RBUTTONDOWN,
WM_LBUTTONDOWN,
WM_NCRBUTTONDBLCLK,
WM_NCRBUTTONUP,
WM_NCRBUTTONDOWN,
WM_NCMBUTTONDBLCLK,
WM_NCMBUTTONUP,
WM_NCMBUTTONDOWN,
WM_KEYDOWN,
WM_KEYUP,
WM_CHAR,
WM_HOTKEY,
WM_KILLFOCUS,
WM_SETFOCUS,
WM_SETCURSOR:
Result := 0;
else
Result := CallWindowProc(
Pointer(GetWindowLong(hwnd, GWL_USERDATA)), hwnd, uMsg, wParam, lParam);
end;
end;
und wer sich fragt wie man das Subcalssing macht ... so zB:
Delphi-Quellcode:
SetWindowLong(GetDlgItem(hwnd, IDC_RICHEDIT_AGREEMENT),
GWL_USERDATA,
SetWindowLong(GetDlgItem(hwnd, IDC_RICHEDIT_AGREEMENT), GWL_WNDPROC, Integer(@RichEditSubclassWndProc)));
Daniel R. Wolf
|
|
Zitat
|