Visual Basic, .NET, ASP, VBScript
 

   
   
     

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

Страница: 1 |

 

  Вопрос: Вопросы - помогите плз.. Добавлено: 23.08.02 04:30  

Автор вопроса:  Lector

Есть кнопка, при нажатии на нее она становится недоступной, выполняются какие-то действия, кнопка становится доступной. Почему если быстро кликнуть пару раз на эту кнопку, то после того, как она станет доступной клик на ней происходит автоматически? То есть почему клик на недоступную кнопку срабатывает?

Есть label, с кастомной иконкой. При наведении на label появляется рука-иконка. При клике на этом label я убираю эту иконку. Происходят какие то действия и я возвращаю иконку-руку этому label. Но если курсор неподвижен, то иконка не появится, пока я мышой не пошевелю. Как это обойти?

Как убрать курсор вообще и вернуть его?

Также как сменить разрешение экрана на 800x600 и при выходе из программы вернуть первоначальное разрешение экрана? Примеров нашел много, но все они возвращают в первоначальное разрешение, но почему ставят минимальную частоту. То есть было, скажем, 1024x768x85, сменили на 800x600x85, а восстанавливается 1024x768x60 :( И неплохо бы примерчик, где после возврата разрешения все приложения не потеряли бы свой размер - ну там сам vb не сворачивался бы на треть экрана и т.д.

Буду очень благодарен, если вы мне поможите!

Ответить

  Ответы Всего ответов: 6  

Номер ответа: 1
Автор ответа:
 vbWolf



Вопросов: 0
Ответов: 2
 Профиль | | #1 Добавлено: 23.08.02 08:48

Ответ на первый вопрос: вероятно после того, как кнопка стала неактивной, и программа начала выполнять какие-либо действия, она "зависла", т.е. перестала на время работы реагировать на ко[sensored]ы пользователя. Поэтому сообщения о щелчках на кнопке не обрабатывались это самой кнопкой, а добавились в буфер сообщений. Они были обработаны после окончания работы программы, тогда когда кнопка стала активной. Вот и кажется, что щелчек самопроизвольный! Используй во время работы твоей программы оператор DoEvents - тогда зависания программы не будет и кнопка будет работать нормально.

Второй вопрос: чтобы сделать курсор видимым/невидимым испольуй функцию

Private Declare Function ShowCursor Lib "user32" Alias "ShowCursor" (ByVal bShow As Long) As Long

bShow = 0 - курсор невидим, bShow = Not 0 - видим

Ответить

Номер ответа: 2
Автор ответа:
 Lector



Вопросов: 4
Ответов: 5
 Профиль | | #2 Добавлено: 23.08.02 08:55
Да в том и дело, что там полно DoEvents и все равно срабатывает клик  :(

Ответить

Номер ответа: 3
Автор ответа:
 CyRax



Разработчик Offline Client

ICQ: 204447456 

Вопросов: 180
Ответов: 4229
 Web-сайт: basicproduction.nm.ru
 Профиль | | #3
Добавлено: 23.08.02 23:38

Попробуй поставить счётчик нажатий.

Ну типа там

Dim OneClick as Boolean

OneClick=False

Sub Command1_Click()

if OneClick=True then exit sub

If OneClick=False then OneClick=True:

'Далее твой код

End Sub

 

Надеюсь уловил смысл ?

Ответить

Номер ответа: 4
Автор ответа:
 Lector



Вопросов: 4
Ответов: 5
 Профиль | | #4 Добавлено: 23.08.02 23:46

Да так и делаю. Примерно так:

Sub Command1_Click()

If Game = True Then Exit Sub

Game = True

'какие-то действия

Game = False

End Sub

 

А также делаю еще проверки на .Enabled и прочее. Все равно клик передается на кнопку только тогда, когда все действия в кнопке заканчиваются и все мои флаги оказываются в пролете. То есть винда просто откладывает событие клика до тех пор, пока действия по кнопке не заканчиваются. Как это обойти не имею не малейшего представления :(

Ответить

Номер ответа: 5
Автор ответа:
 CyRax



Разработчик Offline Client

ICQ: 204447456 

Вопросов: 180
Ответов: 4229
 Web-сайт: basicproduction.nm.ru
 Профиль | | #5
Добавлено: 26.08.02 01:59

Хрен его знает.

Наверное нужно обнулять какой-нибудь там мышиный буфер.

Просмотри примеры и коды работы с мышью. Или  Mouse Functions в SDK.

Ответить

Номер ответа: 6
Автор ответа:
 CyRax



Разработчик Offline Client

ICQ: 204447456 

Вопросов: 180
Ответов: 4229
 Web-сайт: basicproduction.nm.ru
 Профиль | | #6
Добавлено: 26.08.02 02:02

Насчёт метки. Ты МоузеПоинтер не пробовал к нулю приравнять ?

Ответить

Страница: 1 |

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



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