неактивное окно, клик на кнопку срабатывает со 2й попытки

Программирование на Visual Basic, главный форум. Обсуждение тем программирования на VB 1—6.
Даже если вы плохо разбираетесь в VB и программировании вообще — тут вам помогут. В разумных пределах, конечно.
Правила форума
Темы, в которых будет сначала написано «что нужно сделать», а затем просьба «помогите», будут закрыты.
Читайте требования к создаваемым темам.
Nikita
Обычный пользователь
Обычный пользователь
 
Сообщения: 90
Зарегистрирован: 05.02.2003 (Ср) 15:09
Откуда: Russia

неактивное окно, клик на кнопку срабатывает со 2й попытки

Сообщение Nikita » 04.07.2003 (Пт) 14:48

форма с parent - другой формой ("панелька", через API: SetWindowLong hwnd, GWL_HWNDPARENT, fMainForm.hwnd)
когда эта форма-панелька неактивна, чтобы нажать на ней кнопку, нужно сначала сделать форму активной, и только потом кнопка нажмется, т.е. получается кликаешь на кнопку, ничего не происходит только форма активизируется, сликаешь снова - и тогда уже кнопка сработает

как избавиться от такого эффекта?
хочется чтобы нажатие на кнопку сразу срабатывало, как например в окне поиска в Excel

FaKk2
El rebelde gurú
El rebelde gurú
Аватара пользователя
 
Сообщения: 2031
Зарегистрирован: 09.03.2003 (Вс) 22:10
Откуда: Los Angeles

Сообщение FaKk2 » 04.07.2003 (Пт) 14:56

Это код который активирует нужное окно..Вставь в MouseDown
Код: Выделить всё
'Code by Mahbub (mahbub73@hotmail.com)
'This example requires two forms with on each for one command button.
'Both buttons should be named 'Command1'

'In Form1
Private Sub Command1_Click()
    ' Make the window Form2 the active window for the program.  Note that
    ' this function will not make the window the foreground window if the user is currently
    ' working with a separate program.
    Dim retval As Long  ' return value
    retval = SetActiveWindow(Form2.hwnd)  ' set Form2 as the application's active window
End Sub
Private Sub Form_Load()
    Form2.Show
End Sub

'In Form2:
Private Sub Command1_Click()
    Dim retval As Long  ' return value
    retval = SetActiveWindow(Form1.hwnd)  ' set Form1 as the application's active window
End Sub

'In a module:
Declare Function SetActiveWindow Lib "user32.dll" (ByVal hwnd As Long) As Long
Для получения ответа надо продемонстрировать качества, позволяющие стать компетентным — внимательность, вдумчивость, наблюдательность, желание активно участвовать в выработке решения.


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

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

Сейчас этот форум просматривают: AhrefsBot, Yandex-бот и гости: 15

    TopList