Помогите начинающему :(

Программирование на Visual Basic, главный форум. Обсуждение тем программирования на VB 1—6.
Даже если вы плохо разбираетесь в VB и программировании вообще — тут вам помогут. В разумных пределах, конечно.
Правила форума
Темы, в которых будет сначала написано «что нужно сделать», а затем просьба «помогите», будут закрыты.
Читайте требования к создаваемым темам.
Kronc
Начинающий
Начинающий
 
Сообщения: 4
Зарегистрирован: 26.09.2006 (Вт) 0:24

Помогите начинающему :(

Сообщение Kronc » 26.09.2006 (Вт) 0:28

Совсем недавно стал изучать VB...но такая проблема и нигде не могу найти точного решения.
Смысл такой:
Если пиксель в х у = цвету а, то мышью двигаем туда
Понимаю тупой вопрос... :roll:
Но что то ни в одном учебнике этот пример не рассматривается

BV
Thinker
Thinker
Аватара пользователя
 
Сообщения: 3987
Зарегистрирован: 12.09.2004 (Вс) 0:55
Откуда: Молдавия, г. Кишинёв

Сообщение BV » 26.09.2006 (Вт) 1:19

Point/GetPixel
SetCursorPos
const char *out = "|*0>78-,+<|"; size_t cc = char_traits<char>::length(out);
for (size_t i=0;i<cc;i++){cout<<static_cast<char>((out[i]^89));}cout<<endl;

Kronc
Начинающий
Начинающий
 
Сообщения: 4
Зарегистрирован: 26.09.2006 (Вт) 0:24

Сообщение Kronc » 28.09.2006 (Чт) 12:20

Мда что то работа моя зашла в тупик. Никто не знает есть ли исходники кликера, который при пикселе А в точке Б бьет по нему мышью?
Уже ночь не сплю пытаюсь написать
Помогите а то я скоро копыта откину

alibek
Большой Человек
Большой Человек
 
Сообщения: 14205
Зарегистрирован: 19.04.2002 (Пт) 11:40
Откуда: Russia

Сообщение alibek » 28.09.2006 (Чт) 12:28

Тебе уже дали ответ.
Требуется только найти описание этих API-функций в MSDN.
Lasciate ogni speranza, voi ch'entrate.

Debugger
Продвинутый гуру
Продвинутый гуру
Аватара пользователя
 
Сообщения: 1667
Зарегистрирован: 17.06.2006 (Сб) 15:11

Сообщение Debugger » 28.09.2006 (Чт) 16:09

При помощи цикла (идёш не ПО 1, А ПО Screen.TwipsPerPixelX и Y) проходишся по ширине картинке n раз (n это длинна картинки). GetPixel'ишь пускай с и n. Получаешь цвет типа Long. Сравниваешь его и т.д.
Код: Выделить всё

Private Declare Function GetPixel Lib "gdi32" (ByVal hdc As Long, ByVal x As Long, ByVal y As Long) As Long
Private Declare Function SetCursorPos Lib "user32" (ByVal x As Long, ByVal y As Long) As Long

Private Sub JumpCursor(x, y)
SetCursorPos x, y
End Sub

Private Sub ........
Dim clr As Long
Dim x As Integer
Dim y As Integer
Dim a As Long
For x = 0 To pic.Width Step Screen.TwipsPerPixelX
    For y = 0 To pic.Height Step Screen.TwipsPerPixelY
        clr = GetPixel(pic.hdc, x / Screen.TwipsPerPixelX, y / Screen.TwipsPerPixelY)
        If clr = a Then
            JumpCursor (Me.Left + x) / 15, (Me.Top + y) / 15
            Exit Sub
        End If
    Next
Next
End Sub

keks-n
Доктор VB наук
Доктор VB наук
Аватара пользователя
 
Сообщения: 2509
Зарегистрирован: 19.09.2005 (Пн) 17:17
Откуда: г. Москва

Сообщение keks-n » 28.09.2006 (Чт) 16:24

Народ, судя по "кликеру" ему надо не просто переместить мышь, а ещё и нажать куда надо. Посему нужно заменить SetCursorPos на mouse_event
Изображение

Paladium
Начинающий
Начинающий
 
Сообщения: 21
Зарегистрирован: 21.03.2006 (Вт) 15:56

Сообщение Paladium » 28.09.2006 (Чт) 18:54

Сопутствуюший вопрос товаришю Kronc.
УПРОСТИМ ПРИМЕР
Решение может быть простым.
Ты хочеш чтоб мышка находясь над формой к примеру над кнопкой которую назовем пиксель, ну типа ОЧЕНЬ большой пиксель. Так чтоб мышка нажала на ету кнопку.
Ты подобный вопрос задаеш? Ибо все что видиш на мониторе состоит из пикселей.

Amed
Алфизик
Алфизик
 
Сообщения: 5346
Зарегистрирован: 09.03.2003 (Вс) 9:26

Сообщение Amed » 28.09.2006 (Чт) 19:02

Paladium, не в тему. Пиксель - это пиксель, а никак не кнопка.

Paladium
Начинающий
Начинающий
 
Сообщения: 21
Зарегистрирован: 21.03.2006 (Вт) 15:56

Сообщение Paladium » 28.09.2006 (Чт) 19:37

Если упростить задачу то можно принебречь понятиями и свести к простым решениям.
Етот вариант на много проше чем прыгать в дебри апи функций.

ТАК ВОТ ПРЕДСТАВИМ КНОПКУ ЗА ПИКСЕЛЬ

Предлагаю продолжить с того на чем остановились.

Amed
Алфизик
Алфизик
 
Сообщения: 5346
Зарегистрирован: 09.03.2003 (Вс) 9:26

Сообщение Amed » 28.09.2006 (Чт) 19:42

Paladium, устное предупреждение. В первом же ответе было дано простое решение.

Debugger
Продвинутый гуру
Продвинутый гуру
Аватара пользователя
 
Сообщения: 1667
Зарегистрирован: 17.06.2006 (Сб) 15:11

Сообщение Debugger » 28.09.2006 (Чт) 20:58

Ага, представляешь, у тя видео 1024*512! :P ! Ты запаришься добавлять кнопочки, потом менять их проперти, потом ещё, кстати и тормозить будет. Мой код очень, очень простой.
keks-n писал(а):Народ, судя по "кликеру" ему надо не просто переместить мышь, а ещё и нажать куда надо. Посему нужно заменить SetCursorPos на mouse_event

А "кликнуть" можно и по другому: просто вызвать процедуру с необходимыми аргубентами: Object_MouseDown(X,Y,не помню чё...)

Kovu
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 924
Зарегистрирован: 29.04.2005 (Пт) 17:38

Сообщение Kovu » 28.09.2006 (Чт) 21:45

Debugger
Ну конечно, как я мог забыть, у всех окон вне твоего приложения, есть такой метод, и причём его можно без проблем вызвать не используя АПи...
Если всё делать своими ручками, они скоро отвалятся !

Kronc
Начинающий
Начинающий
 
Сообщения: 4
Зарегистрирован: 26.09.2006 (Вт) 0:24

Сообщение Kronc » 28.09.2006 (Чт) 23:08

Терь постоянный глюк :cry:

Declare Sub mouse_event Lib "user32.dll" (ByVal dwFlags As Long, ByVal dx As Long, ByVal dy As Long, ByVal cButtons As Long, ByVal dwExtraInfo As Long)

Compile error:
Blablabla Declare Statements not allowed as Public members of object modules

Amed
Алфизик
Алфизик
 
Сообщения: 5346
Зарегистрирован: 09.03.2003 (Вс) 9:26

Сообщение Amed » 28.09.2006 (Чт) 23:19

В код формы вставляешь... Надо писать
Код: Выделить всё
Private Declare Sub


Срочно учить матчасть, ламо!

Amed
Алфизик
Алфизик
 
Сообщения: 5346
Зарегистрирован: 09.03.2003 (Вс) 9:26

Сообщение Amed » 29.09.2006 (Пт) 22:42

Не бойся, Kronc, покажи код.

RayShade
Scarmarked
Scarmarked
Аватара пользователя
 
Сообщения: 5511
Зарегистрирован: 02.12.2002 (Пн) 17:11
Откуда: Russia, Saint-Petersburg

Сообщение RayShade » 30.09.2006 (Сб) 12:26

Amed

Как то это, прямо двусмысленно звучит :) А вдруг, Kronc не девушка, а? :lol:


Вернуться в Visual Basic 1–6

Кто сейчас на конференции

Сейчас этот форум просматривают: Mail.ru [бот], Yandex-бот и гости: 108

    TopList