Главная страница
    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.45 MB
Время: 0.008 c
1-73722
Rule
2002-09-11 10:11
2002.09.23
Помогите


14-73878
panov
2002-08-27 03:30
2002.09.23
Встреча в Питере.


1-73698
roman002
2002-09-11 07:49
2002.09.23
Сервис+WinExec


1-73729
Сатир
2002-09-10 15:06
2002.09.23
аргумент как паблик-свойство


7-73906
Agran
2002-07-15 13:10
2002.09.23
Как запретить пользователю двигать курсором





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский