Страница: 1 | 2 | 3 |
Вопрос: UserControl.Move
Добавлено: 19.08.04 22:26
Автор вопроса: night-roll
Ответы
Всего ответов: 44
Номер ответа: 31
Автор ответа:
Lister
ICQ: 298621256
Вопросов: 57
Ответов: 304
Профиль | | #31
Добавлено: 26.08.04 22:26
ОС Windows - далеко ходить не надо!
Номер ответа: 32
Автор ответа:
cresta
Вопросов: 117
Ответов: 1538
Профиль | | #32
Добавлено: 26.08.04 23:20
Ты хочешь сказать, что у ОС Windows при каждом запуске на входе имеется постоянный набор входных данных? Я же сказал, что "при прочих равных условиях". ОС при каждом запуске считывает столько параметров, что представить страшно. О многих мы даже и не догадываемся. И эти данные каждый раз разные. Чтобы Windows имела постоянный набор входных данных, надо перед каждым её запуском форматировать винт. Причем все разделы, а не только тот, где она была установлена.
Потому и ведёт она себя по разному, что каждый раз имеет разный набор входных данных.
Так что Windows - это не тот пример кода, который можно запустить два раза с одинаковыми параметрами. Давай код с одинаковыми параметрами А то твои утверждения получаются голословные
Номер ответа: 33
Автор ответа:
Lister
ICQ: 298621256
Вопросов: 57
Ответов: 304
Профиль | | #33
Добавлено: 26.08.04 23:33
Это уже мелочи...
Номер ответа: 34
Автор ответа:
cresta
Вопросов: 117
Ответов: 1538
Профиль | | #34
Добавлено: 27.08.04 00:37
Потому и не можешь работать с хуками, что о мелочах не думаешь
Номер ответа: 35
Автор ответа:
Lister
ICQ: 298621256
Вопросов: 57
Ответов: 304
Профиль | | #35
Добавлено: 27.08.04 00:59
Кто тебе сказал, что я не могу с ними работать???
Откуда такие, мягко сказать, странные предположения?
Номер ответа: 36
Автор ответа:
cresta
Вопросов: 117
Ответов: 1538
Профиль | | #36
Добавлено: 27.08.04 01:53
чем же тебе таймер не нравится??? По крайней мере это
способ убрать хотя бы один хук из кода...
Номер ответа: 37
Автор ответа:
Lister
ICQ: 298621256
Вопросов: 57
Ответов: 304
Профиль | | #37
Добавлено: 27.08.04 02:18
>чем же тебе таймер не нравится??? По крайней мере это
способ убрать хотя бы один хук из кода...
Я от этих слов и сейчас не отказываюсь и никогда не откажусь!
night-roll прямо сказал: "не-е хуки мне доверия не внушают.
а вот, чё бы такого придумать, чтобы чисто, без фокусов.
p.s. и без модуля, желательно(!) ".
Понимаешь, человеку хуки + модули не нравятся, поэтому для него и подойдет такой ответ: "
таймер + GetWindowRect + ScreenToClient - по крайней мере это способ убрать хотя бы один хук из кода."
Разве здесь написано "я не умею использовать хуки и субклассирование"?
Что-то не вижу...
Поэтому твои вышеуказанные предположения считаю ложными.
Номер ответа: 38
Автор ответа:
cresta
Вопросов: 117
Ответов: 1538
Профиль | | #38
Добавлено: 27.08.04 03:04
Ок, я приношу извинения что заподозрил тебя в нехорошем.
Номер ответа: 39
Автор ответа:
Lister
ICQ: 298621256
Вопросов: 57
Ответов: 304
Профиль | | #39
Добавлено: 27.08.04 03:12
Принимается
Номер ответа: 40
Автор ответа:
night-roll
Вопросов: 36
Ответов: 326
Профиль | | #40
Добавлено: 27.08.04 21:52
если бы можно было предусмотреть всё, то пора занимать место БОГА(!) и моделировать ЖИЗНЬ.
а если привести код, (цитирую) >который при прочих равных условиях может в первый запуск произвести одни действия, во второй запуск - какие-то другие действия<, то это = предусмотреть всё!!! а это протеворечит вышесказанному.
и ещё, разные составители могут придти к одному результату разными путями - это уже истина или даже ЖИЗНЬ
а против ХУКА ничего плохого сказать нельзя, но если создаётся инструмент(Usercontrol), то это должно быть как можно проще и предсказуемее, т.к. именно он ляжет в основу другого (возможно, более сложного) кода, где понадобится ясность и как раз предсказуемость....
...а что ещё надо программеру и тем, кто пользуется его продуктами (not food)
Номер ответа: 41
Автор ответа:
Lister
ICQ: 298621256
Вопросов: 57
Ответов: 304
Профиль | | #41
Добавлено: 28.08.04 02:26
О, как ты прав )
Номер ответа: 42
Автор ответа:
cresta
Вопросов: 117
Ответов: 1538
Профиль | | #42
Добавлено: 28.08.04 03:47
именно он ляжет в основу другого (возможно, более сложного) кода
Всё верно, поэтому и нужно заботиться о всех мелочах, чтобы какая-нибудь из них не порушила то, что будет надстраиваться на твоём коде. Или отказаться от контроля за всеми тонкостями в пользу простоты и в ущерб функциональности.
Номер ответа: 43
Автор ответа:
night-roll
Вопросов: 36
Ответов: 326
Профиль | | #43
Добавлено: 02.10.04 12:36
не поленился, всё перепробовал... уф-ф...
пришёл к такому виду:
...для начала об'ясню алгоритм и задачи...необходимо было создать контрол, который перерисовывается при наведении(или наоборот) на него курсора, а так же при нажатии на него.
Повторяюсь, но описываю я ScrollBar (нормальный для цветовой схемы ХР).
Причём этот скролл, ещё к тому же, не должен перерисовываться если курсор вывели с него, но при нажатой левой клавише мыши.
надюсь понятно...
Private Declare Function WindowFromPoint Lib "user32" (ByVal xPoint As Long, ByVal yPoint As Long) As Long
Private Declare Function GetCursorPos Lib "user32" (lpPoint As POINTAPI) As Long
Private Type POINTAPI
x As Long
y As Long
End Type
создадим функцию, которая ловит фокус над контролом
Private Function isMouseOver() As Boolean
 im pt As POINTAPI
GetCursorPos pt
isMouseOver = (WindowFromPoint(pt.x, pt.y) = hWnd)
End Function
по-умолчанию установим свойства таймера
Enabled = False
Tag = 0 ' по желанию можете взять переменную, которая будет Boolen и отвечать за нажатое состояние левой кнопки мыши.
' для события MouseMove
здесь запустим таймер Timer1.Enabled = True
' в таймере пишем...
вызываем нашу вышесозданную функцию isMouseOver и обрабатываем нажатие левой клавиши при этом
If Not isMouseOver And Timer.Tag = 0 Then
...
' код прорисовки контрола в нормальное состояние и всё что хотите...
...
end if
' для события MouseDown
' для события MouseUp
Номер ответа: 44
Автор ответа:
night-roll
Вопросов: 36
Ответов: 326
Профиль | | #44
Добавлено: 02.10.04 12:42
забыл сказать, что в таймере надо прописать
это избавляет нас от лишней работы таймера на проверку isMouseOver
---------------------------------------
и хуков не потребововалось ), а тем более модулей.