Страница: 1 | 2 |
Вопрос: Всегда неактивное окно
Добавлено: 28.09.06 20:22
Автор вопроса: Ирина
Ответы
Всего ответов: 24
Номер ответа: 16
Автор ответа:
Ирина
Вопросов: 2
Ответов: 15
Профиль | | #16
Добавлено: 01.10.06 19:53
Знаю, что программирование не женское дело, но ни чего не выходит.
Private Declare Function GetWindowLong Lib "user32" Alias "GetWindowLongA" (ByVal hwnd As Long, ByVal nIndex As Long) As Long
Private Declare Function SetWindowLong Lib "user32" Alias "SetWindowLongA" (ByVal hwnd As Long, ByVal nIndex As Long, ByVal dwNewLong As Long) As Long
Private Const WS_EX_NOACTIVATE As Long = &H8000000
Private Const WS_EX_CLIENTEDGE = &H200&
Private Const GWL_EXSTYLE = (-20)
Private Sub Form_Load()
SetWindowLong Me.hwnd, GWL_EXSTYLE, WS_EX_CLIENTEDGE
GetWindowLong Me.hwnd, GWL_EXSTYLE & WS_EX_NOACTIVATE
End Sub
Ругается - переполнение!
Номер ответа: 17
Автор ответа:
Ирина
Вопросов: 2
Ответов: 15
Профиль | | #17
Добавлено: 01.10.06 20:15
Т.е.
SetWindowLong Me.hwnd, GWL_EXSTYLE, WS_EX_NOACTIVATE
GetWindowLong Me.hwnd, GWL_EXSTYLE
Номер ответа: 18
Автор ответа:
Neco
ICQ: 247906854
Вопросов: 133
Ответов: 882
Web-сайт:
Профиль | | #18
Добавлено: 01.10.06 20:20
Вот так всё должно работать:
Private Declare Function GetWindowLong Lib "user32" Alias "GetWindowLongA" (ByVal hwnd As Long, ByVal nIndex As Long) As Long
Private Declare Function SetWindowLong Lib "user32" Alias "SetWindowLongA" (ByVal hwnd As Long, ByVal nIndex As Long, ByVal dwNewLong As Long) As Long
Private Const WS_EX_NOACTIVATE As Long = &H8000000
Private Const GWL_EXSTYLE As Long = (-20)
Private Sub Form_Load()
SetWindowLong Me.hwnd, GWL_EXSTYLE, GetWindowLong(Me.hwnd, GWL_EXSTYLE) + WS_EX_NOACTIVATE
End Sub
А насчёт женщины-программера: у нас работает девушка-кодер, да и на курсах по ораклу я учился на админа второго уровня вместе с женщиной (ну ей точно за сорок было) - а раз sql знает, значит тоже программёрка!
Номер ответа: 19
Автор ответа:
Ирина
Вопросов: 2
Ответов: 15
Профиль | | #19
Добавлено: 01.10.06 20:26
Должно, но не работает. Окно сразу загружается активным.
Номер ответа: 20
Автор ответа:
Neco
ICQ: 247906854
Вопросов: 133
Ответов: 882
Web-сайт:
Профиль | | #20
Добавлено: 01.10.06 20:42
Private Declare Function GetWindowLong Lib "user32" Alias "GetWindowLongA" (ByVal hwnd As Long, ByVal nIndex As Long) As Long
Private Declare Function SetWindowLong Lib "user32" Alias "SetWindowLongA" (ByVal hwnd As Long, ByVal nIndex As Long, ByVal dwNewLong As Long) As Long
Private Declare Function ShowWindow Lib "user32.dll" (ByVal hwnd As Long, ByVal nCmdShow As Long) As Long
Private Const WS_EX_NOACTIVATE As Long = &H8000000
Private Const GWL_EXSTYLE As Long = (-20)
Private Const SW_SHOWNOACTIVATE As Long = 4
Private Sub Form_Load()
Me.Visible = False
ShowWindow Me.hwnd, SW_SHOWNOACTIVATE
SetWindowLong Me.hwnd, GWL_EXSTYLE, GetWindowLong(Me.hwnd, GWL_EXSTYLE) + WS_EX_NOACTIVATE
End Sub
Тему можно развивать.
Номер ответа: 21
Автор ответа:
Ирина
Вопросов: 2
Ответов: 15
Профиль | | #21
Добавлено: 01.10.06 21:01
Спасибо Вам за помощь!
Только ни чего не вышло, форма становиться активной при первом клике. Простите, что заняла столько Вашего времени.
Номер ответа: 22
Автор ответа:
Neco
ICQ: 247906854
Вопросов: 133
Ответов: 882
Web-сайт:
Профиль | | #22
Добавлено: 01.10.06 21:22
Да ну не может быть - может Вы имеете в виду, что рамка становится похожей на активную? Но это ещё не значит, что форма активна - пощёлкайте на клаве для проверки. Для надёжности ориентируйтесь на экзешник, а не на debug. У меня прога с этим флагом живёт уже вечность и ни разу не замечал, чтобы глючило.
Если что я в асе сижу.
Номер ответа: 23
Автор ответа:
Ирина
Вопросов: 2
Ответов: 15
Профиль | | #23
Добавлено: 01.10.06 22:55
Простите!!!!!!!(((
Да! Да! Да! Все работает как нужно!
Смущал вид активного окна, но нет ни каких мерцаний, и активность не передается!
Спасибо Вам огромное!
Номер ответа: 24
Автор ответа:
Ирина
Вопросов: 2
Ответов: 15
Профиль | | #24
Добавлено: 01.10.06 22:57
Простите!!!!!!!
Да! Да! Да! Все работает как нужно!
Смущал вид активного окна, но нет ни каких мерцаний, и активность не передается!
Спасибо Вам огромное!