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

Вниз

---|Ветка была без названия|---   Найти похожие ветки 

 
Dmk ©   (2002-08-02 23:39) [0]

У меня в классе определен обработчик сообщения на WM_PAINT.
А на WM_MOUSEMOVE стоит вызов WM_PAINT. При скроллинге по WM_MOUSEMOVE отрисовка WM_PAINT начинается не сразу, а только по истечении какого-то времени. Примерно через четверть-секунды. При этом, видимо где-то "сохраняются" другие вызовы и происходит прорисовка с эффектом "Хвоста". Похоже на мышиный шлейф из курсоров, только из Bitmap"ов.

Посоветуйте пожалуйста что-нибудь.
PS. Возникает такой эффект на очень быстрых тачках > 1,5GHZ P4.


 
Dmk ©   (2002-08-02 23:59) [1]

Вот код функций:

Procedure TDrawForm.WMMouseMove(var m: TWMMouseMove);
var x,y: Integer;
begin
If FAction then exit;

x := m.XPos;
y := m.YPos;

//Global mouse positions
MouseX := x;
MouseY := y;
//...
if LeftMoving then
begin
mMovePosX := x;
mMovePosY := y;
//...
ofsMouseX := (mDownPosX - mMovePosX);
ofsMouseY := (mDownPosY - mMovePosY);
//...
If ((ofsMouseX <> 0) or (ofsMouseY <> 0)) then
begin
HorzScrollBar.Position := HorzScrollBar.Position + (ofsMouseX);
VertScrollBar.Position := VertScrollBar.Position + (ofsMouseY);
//...
sPosX := HorzScrollBar.Position;
sPosY := VertScrollBar.Position;
//...
vpDraw(sPosX,sPosY,dtRegionRepaint);
//...
mDownPosX := mMovePosX;
mDownPosY := mMovePosY;
//...
CrossDrawed := false;
end;
end;//If LeftMoving


//.................
if RightMoving then
begin
mMovePosX := x;
mMovePosY := y;
//...
ofsMouseX := -(mDownPosX - mMovePosX) * 4;
ofsMouseY := -(mDownPosY - mMovePosY) * 4;
//...
If ((ofsMouseX <> 0) or (ofsMouseY <> 0)) then
begin
HorzScrollBar.Position := HorzScrollBar.Position + (ofsMouseX);
VertScrollBar.Position := VertScrollBar.Position + (ofsMouseY);
//...
sPosX := HorzScrollBar.Position;
sPosY := VertScrollBar.Position;
//...
vpDraw(sPosX,sPosY,dtRegionRepaint);
//...
mDownPosX := mMovePosX; //


 
Dmk ©   (2002-08-04 00:07) [2]

Получается так: провел карандашом по бумаге(нарисовал линию), а потом этот карандаш едет до конечной точки некоторое время. Причем по каждой точке.



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

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

Наверх




Память: 0.47 MB
Время: 0.018 c
1-73652
Mars
2002-09-12 16:19
2002.09.23
Как переместить данные после использования SetScrollPos?


14-73860
Сайбрекс
2002-08-28 02:38
2002.09.23
С чего следует начинать?


4-73922
dera
2002-08-04 09:10
2002.09.23
Как добавить свой пункт в меню пуск?


3-73491
Ag2002
2002-08-31 13:05
2002.09.23
FoxPro


6-73786
dim-
2002-07-14 20:20
2002.09.23
Cервер HTTP