1. Заголовок темы должен быть информативным. В противном случае тема удаляется ... 2. Все тексты программ должны помещаться в теги [code=pas] ... [/code], либо быть опубликованы на нашем PasteBin в режиме вечного хранения. 3. Прежде чем задавать вопрос, см. "FAQ", если там не нашли ответа, воспользуйтесь ПОИСКОМ, возможно такую задачу уже решали! 4. Не предлагайте свои решения на других языках, кроме Паскаля (исключение - только с согласия модератора). 5. НЕ используйте форум для личного общения, все что не относится к обсуждению темы - на PM! 6. Одна тема - один вопрос (задача) 7.Проверяйте программы перед тем, как разместить их на форуме!!! 8.Спрашивайте и отвечайте четко и по существу!!!
Помогите. Мне нужно мышью рисовать линии на экране (т.е. нажал на одно место экрана, потом потащил (мышь) и линия рисуется за ней). Пробовал по разному, но при перетаскивании постоянно остаются какие-нибудь следы. Думаю, что нужно ставить свои обработчики (процедуры) на действия мыши, но не знаю как. Помогите кто может.
P.S. может есть другие способы рисования линий таким способом.
Procedure SetMouse( Shape: Word ); Far; External; {$L SETMOUSE.OBJ}
Procedure GetMousePosition( Var X, Y: Word); Var R: Registers; begin With R do begin ax := 3; Intr( $33, R ); X := cx; Y := dx; end; end;
Function GetMouseStatus: Byte; assembler; asm mov ax, 3 int 33h mov ax, bx end;
Function GetMouse: Byte; Var Status: Byte; ST: Boolean; begin ST := False; Repeat Status := GetMouseStatus; If( Status and 1 = 0 ) and ( Status and 2 = 0 ) and ( Status and 4 = 0 ) then ST := True; Until ST; ST := False; Repeat Status := GetMouseStatus; If( Status and 1 = 1 ) or ( Status and 2 = 2 ) or ( Status and 4 = 4 ) then ST := True; Until ST; GetMouse := Status; end;
Repeat GetEvents( Ev ); If( Ev.What and evMouse <> 0 ) then begin Case Ev.What of evMouseUp : begin { отпустили клавишу мыши } end; evMouseDown: begin { нажали клавишу мыши } end; evMouseAuto: begin { нажали и удерживаем клавишу мыши } end; else ClearEvents( Ev ); end; end; Until ( Ev.What <> evNothing );
На время прорисовки и обработки мышу лучше прятать, а то она помнит, что было под указателем. Иногда мыша вообще отказывается показываться, хотя и работает - это зависит от .BGI драйвера. Для стандартных, типа EGAVGA.BGI всё пашет отлично.