Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "WinAPI";
Текущий архив: 2002.09.23;
Скачать: [xml.tar.bz2];

Вниз

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

 
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 вся ветка

Форум: "WinAPI";
Текущий архив: 2002.09.23;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.44 MB
Время: 0.007 c
7-73895
Kosmach
2002-07-11 07:20
2002.09.23
Не могу записать в COM порт


14-73881
VictorT
2002-08-28 17:54
2002.09.23
опять про *.bat файлы


3-73545
_dron_
2002-09-03 10:00
2002.09.23
Как добавить ODBС драйвер Paradox?


8-73765
TPavel
2002-05-23 22:18
2002.09.23
Преобразование Фурье.


1-73649
Shrek
2002-09-12 16:49
2002.09.23
WinAPI





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский