Visual Basic, .NET, ASP, VBScript
 

   
   
     

Форум - Общий форум

Страница: 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
    ;Dim 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
Timer.Tag = 1

' для события MouseUp
Timer.Tag = 0

Ответить

Номер ответа: 44
Автор ответа:
 night-roll



Вопросов: 36
Ответов: 326
 Профиль | | #44 Добавлено: 02.10.04 12:42
забыл сказать, что в таймере надо прописать
Timer.Enabled = False

это избавляет нас от лишней работы таймера на проверку isMouseOver
---------------------------------------
и хуков не потребововалось :)), а тем более модулей.

Ответить

Страница: 1 | 2 | 3 |

Поиск по форуму



© Copyright 2002-2011 VBNet.RU | Пишите нам