Страница: 1 |
Есть кнопка, при нажатии на нее она становится недоступной, выполняются какие-то действия, кнопка становится доступной. Почему если быстро кликнуть пару раз на эту кнопку, то после того, как она станет доступной клик на ней происходит автоматически? То есть почему клик на недоступную кнопку срабатывает? Есть label, с кастомной иконкой. При наведении на label появляется рука-иконка. При клике на этом label я убираю эту иконку. Происходят какие то действия и я возвращаю иконку-руку этому label. Но если курсор неподвижен, то иконка не появится, пока я мышой не пошевелю. Как это обойти? Как убрать курсор вообще и вернуть его? Также как сменить разрешение экрана на 800x600 и при выходе из программы вернуть первоначальное разрешение экрана? Примеров нашел много, но все они возвращают в первоначальное разрешение, но почему ставят минимальную частоту. То есть было, скажем, 1024x768x85, сменили на 800x600x85, а восстанавливается 1024x768x60 :( И неплохо бы примерчик, где после возврата разрешения все приложения не потеряли бы свой размер - ну там сам vb не сворачивался бы на треть экрана и т.д. Буду очень благодарен, если вы мне поможите!
Ответ на первый вопрос: вероятно после того, как кнопка стала неактивной, и программа начала выполнять какие-либо действия, она "зависла", т.е. перестала на время работы реагировать на ко[sensored]ы пользователя. Поэтому сообщения о щелчках на кнопке не обрабатывались это самой кнопкой, а добавились в буфер сообщений. Они были обработаны после окончания работы программы, тогда когда кнопка стала активной. Вот и кажется, что щелчек самопроизвольный! Используй во время работы твоей программы оператор DoEvents - тогда зависания программы не будет и кнопка будет работать нормально. Второй вопрос: чтобы сделать курсор видимым/невидимым испольуй функцию Private Declare Function ShowCursor Lib "user32" Alias "ShowCursor" (ByVal bShow As Long) As Long bShow = 0 - курсор невидим, bShow = Not 0 - видим Попробуй поставить счётчик нажатий. Ну типа там Dim OneClick as Boolean OneClick=False Sub Command1_Click() if OneClick=True then exit sub If OneClick=False then OneClick=True: 'Далее твой код End Sub Надеюсь уловил смысл ? Да так и делаю. Примерно так: Sub Command1_Click() If Game = True Then Exit Sub Game = True 'какие-то действия Game = False End Sub А также делаю еще проверки на .Enabled и прочее. Все равно клик передается на кнопку только тогда, когда все действия в кнопке заканчиваются и все мои флаги оказываются в пролете. То есть винда просто откладывает событие клика до тех пор, пока действия по кнопке не заканчиваются. Как это обойти не имею не малейшего представления Хрен его знает. Наверное нужно обнулять какой-нибудь там мышиный буфер. Просмотри примеры и коды работы с мышью. Или Mouse Functions в SDK. Насчёт метки. Ты МоузеПоинтер не пробовал к нулю приравнять ? Страница: 1 |
Вопрос: Вопросы - помогите плз..
Добавлено: 23.08.02 04:30
Автор вопроса: Lector
Ответы
Всего ответов: 6
Номер ответа: 1
Автор ответа:
vbWolf
Вопросов: 0
Ответов: 2
Профиль | | #1
Добавлено: 23.08.02 08:48
Номер ответа: 2
Автор ответа:
Lector
Вопросов: 4
Ответов: 5
Профиль | | #2
Добавлено: 23.08.02 08:55
Да в том и дело, что там полно DoEvents и все равно срабатывает клик
Номер ответа: 3
Автор ответа:
CyRax
Разработчик Offline Client
ICQ: 204447456
Вопросов: 180
Ответов: 4229
Web-сайт:
Профиль | | #3
Добавлено: 23.08.02 23:38
Номер ответа: 4
Автор ответа:
Lector
Вопросов: 4
Ответов: 5
Профиль | | #4
Добавлено: 23.08.02 23:46
Номер ответа: 5
Автор ответа:
CyRax
Разработчик Offline Client
ICQ: 204447456
Вопросов: 180
Ответов: 4229
Web-сайт:
Профиль | | #5
Добавлено: 26.08.02 01:59
Номер ответа: 6
Автор ответа:
CyRax
Разработчик Offline Client
ICQ: 204447456
Вопросов: 180
Ответов: 4229
Web-сайт:
Профиль | | #6
Добавлено: 26.08.02 02:02