Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2002.02.18;
Скачать: CL | DM;

Вниз

Ошибка (но в чём ???)   Найти похожие ветки 

 
Русский   (2001-11-12 14:26) [0]

// Ет - оконная процедура
procedure TSystemButton.NewParentWndProc(var message: TMessage);
begin
with message do
begin
Result := CallWindowProc(PrevParentWndProc, ParentForm.Handle, Msg, WParam, LParam);
if Msg = WM_NCLBUTTONDOWN then ShowMessage("");
{ Здесь - окошко не вызывается, т. е. по какой то причине не правильно обрабатывается сообщение WM_NCLBUTTONDOWN
Почему ?}
if (Msg = WM_NCHitTest) and (Result = htCaption) then
if PtInRect(ButtonRect, ParentForm.ScreenToClient(Point(LParamLo, LParamHi))) then Result := SystemButtonMessage;
if (Msg = wm_Close) or (Msg = wm_Destroy) then SeekAndDestroy := True;
end;
end;


 
GrEG ©   (2001-11-13 11:30) [1]

Неклиентская область окна - рамка и заголовок. При нажатии левой кнопки мыши именно в этих областях и будет генерироваться сообщение WM_NCLBUTTONDOWN. Если мышь находится за пределами контролируемого окна то это сообщение генерироваться не будет. Для того, чтобы отследить манипуляции с мышью за пределами окна лично я знаю два варианта:
1) захватить мышь (SetCapture или CaptureMouse - не помню точное название функции). Тогда все сообщения от мыши будут передаваться окну как если бы мышь находилась над ним (сообщения WM_MOUSEMOVE, WM_LBUTTONDOWN, WM_LBUTTONUP и т.п.). Сообщения WM_NCXXX генерироваться не будут.
2) Установить ловушку(hook) на мышь и обрабатывать (просматривать) все сообщеения от мыши в системе.
Второй вариант более предпочтителен. Он дает более корректный, на мой взгляд, вариант решения.


 
GrEG ©   (2001-11-13 11:33) [2]

А вообще, вопросы нужно более тщательно формулировать. Может я не на тот вопрос и отвечал, который предполагался?



Страницы: 1 вся ветка

Текущий архив: 2002.02.18;
Скачать: CL | DM;

Наверх




Память: 0.47 MB
Время: 0.009 c
3-56986
Илья Лу.
2002-01-23 14:28
2002.02.18
внешнее объединение и connect by в одном запросе


3-56976
Stocker
2002-01-23 11:23
2002.02.18
проблема с доступом SQl запроса под Interbase 5


14-57218
Knyaz17
2001-12-13 10:38
2002.02.18
Чем отличается MS-SQL 7.0 и MS-SQL 2000?


4-57269
Dimaond Cat
2001-12-18 01:25
2002.02.18
Закрасить кнопку, (также вопрос к Ю.ЗОТОВУ)


14-57213
Undert
2001-12-29 15:29
2002.02.18
Windows XP