Форум: "Начинающим";
Текущий архив: 2007.09.30;
Скачать: [xml.tar.bz2];
Вниззапрет перетаскивания окна Найти похожие ветки
← →
BFG9k © (2007-09-03 18:44) [0]Есть компонент стороннего разработчика (нет возможности изменить исходники). Одно окно в нем некорректно перерисовывается при перетаскивании. Можно ли как-то запретить перетаскивание окна, имею его handle ?
← →
Dib@zol © (2007-09-03 18:54) [1]Повесь на него собственную оконную процедуру и обрабатывай WM_NCHITTEST. Сперва - bydefault"ным обработчиком (сиречь CallWindowProc), а потом лови возвращённый результат, и если он HTCAPTION, то меняй его на HTCLIENT.
← →
DVM © (2007-09-03 19:08) [2]
> Dib@zol © (03.09.07 18:54) [1]
совсем необязательно, что перетаскивание реализовано путем обработки WM_NCHITTEST.
← →
Dib@zol © (2007-09-03 19:18) [3]Удалено модератором
← →
BFG9k © (2007-09-03 19:37) [4]Dib@zol © (03.09.07 18:54) [1]
Повесь на него собственную оконную процедуру ...
Простите за нескромный вопрос. А как это сделать ?
P.S.: Пробовал обрабатывать WM_NCHITTEST с помощью компонента ApplicationEvents.OnMessage. Не получилось. Проблема в том, что видимо окно не связано с Application. Это не форма и даже не VCL компонент. Хотелось бы поподробнее насчет оконной процедуры.
← →
Dib@zol © (2007-09-03 19:47) [5]Ок.
var
WPH : Pointer;
...
function NewWndProc(hWnd: HWND; Msg: LongInt; wParam, lParam: Longint): longInt; stdcall;
begin
Result:=CallWindowProc(WPH, hWnd, Msg, wParam, lParam);
if (Msg = WM_NCHITTEST)and(Result = HTCAPTION) then Result:=HTCLIENT;
end;
...
LongInt(WPH):=SetWindowLong(Компонент.Handle, GWL_WNDPROC, LongInt(@NewWndProc));
Страницы: 1 вся ветка
Форум: "Начинающим";
Текущий архив: 2007.09.30;
Скачать: [xml.tar.bz2];
Память: 0.45 MB
Время: 0.058 c