Страница: 1 | 2 |
Вопрос: Всегда неактивное окно
Добавлено: 28.09.06 20:22
Автор вопроса: Ирина
КАК????????????????????????????????
Ответы
Всего ответов: 24
Номер ответа: 1
Автор ответа:
Calhoon
ICQ: 789764
Вопросов: 90
Ответов: 230
Web-сайт:
Профиль | | #1
Добавлено: 28.09.06 21:42
1. таймер, уводить фокус с окна
2. ловить появление фокуса на окне, уводить
3. enabled = false?
4. открыть модальную форму, поместить ее за пределы экрана или скрыть
Номер ответа: 2
Автор ответа:
Ирина
Вопросов: 2
Ответов: 15
Профиль | | #2
Добавлено: 28.09.06 22:04
Не пойдет! К форме должен быть доступ и она тут же опять становилась неактивной.
Что-то вроде:
Call ShowWindow(Form1.hwnd, SW_SHOWNOACTIVATE)
Номер ответа: 3
Автор ответа:
-АлександР-
Вопросов: 55
Ответов: 1008
Web-сайт:
Профиль | | #3
Добавлено: 28.09.06 22:47
Короче неактивная, но постоянно видимая?
Номер ответа: 4
Автор ответа:
-АлександР-
Вопросов: 55
Ответов: 1008
Web-сайт:
Профиль | | #4
Добавлено: 28.09.06 22:53
Это ты хочешь найти так решение предыдущего вопроса про виртуальную клавитуру?
И неактивным его тоже можно постоянно делать через SetWindowPos, главное подставить верные константы
Номер ответа: 5
Автор ответа:
Nj
ICQ: 223663115
Вопросов: 21
Ответов: 285
Профиль | | #5
Добавлено: 28.09.06 23:06
Зачем? Мотивация объсняет поведение - что за форма, для чего она?
Номер ответа: 6
Автор ответа:
sne
Разработчик Offline Client
ICQ: 233286456
Вопросов: 34
Ответов: 5445
Web-сайт:
Профиль | | #6
Добавлено: 29.09.06 00:29
сабклассинг с перехватом WM_ACTIVATE, или че-то подобное, сообщения?
Номер ответа: 7
Автор ответа:
vito
Разработчик Offline Client
Вопросов: 23
Ответов: 879
Web-сайт:
Профиль | | #7
Добавлено: 29.09.06 01:47
sne
Очень коротко и лаконично. Никакого флуда.
Объясни подробнее, если знаешь, а то мне тоже стало интересно.
Номер ответа: 8
Автор ответа:
JMP
Вопросов: 6
Ответов: 171
Профиль | | #8
Добавлено: 29.09.06 06:24
hm=хандл диалога с которого надо снять фокус
h=GetForegroundWindow()
IF h=hm THEN
h=FindWindow("ProgMan","" ' можно "Explorer" или любую другую лабуду на которую можно перевести фокус
SetForegroundWindow(h)
END IF
Номер ответа: 9
Автор ответа:
Ирина
Вопросов: 2
Ответов: 15
Профиль | | #9
Добавлено: 29.09.06 17:17
Спасибо всем!
Предыдущий вопрос решил всю проблему.
Private Declare Function SetActiveWindow Lib "user32" (ByVal hwnd As Long) As Long
Private Sub Command1_Click()
SetActiveWindow 0
End Sub
Номер ответа: 10
Автор ответа:
HACKER
Разработчик Offline Client
Вопросов: 236
Ответов: 8362
Профиль | | #10
Добавлено: 29.09.06 20:33
помойму одного WM_ACTIVATE будет недостаточно, там несколько сообщений ловить надо..
Номер ответа: 11
Автор ответа:
Ирина
Вопросов: 2
Ответов: 15
Профиль | | #11
Добавлено: 30.09.06 09:26
Можно запустить окно неактивным:
Private Declare Function SetWindowPos Lib "user32" (ByVal hwnd As Long, ByVal hWndInsertAfter As Long, ByVal X As Long, ByVal Y As Long, ByVal cx As Long, ByVal cy As Long, ByVal wFlags As Long) As Long
Private Sub Form_Load()
Call SetWindowPos(Me.hwnd, -1, 0, 0, 0, 0, &H1 Or &H2 Or &H10 Or &H40)
End Sub
А затем передавать активность при клике на любой элемент с помощью SetActiveWindow, но как убрать активность окна при перетаскивании и клике на панель задач???????????
Номер ответа: 12
Автор ответа:
HACKER
Разработчик Offline Client
Вопросов: 236
Ответов: 8362
Профиль | | #12
Добавлено: 30.09.06 18:57
всеравно будет мерцать, сабклассинг належнее....
Номер ответа: 13
Автор ответа:
Neco
ICQ: 247906854
Вопросов: 133
Ответов: 882
Web-сайт:
Профиль | | #13
Добавлено: 01.10.06 15:57
Гы-гы:
Номер ответа: 14
Автор ответа:
Ирина
Вопросов: 2
Ответов: 15
Профиль | | #14
Добавлено: 01.10.06 19:07
WS_EX_NOACTIVATE As Long = &H8000000 - тоже не спасает.
Номер ответа: 15
Автор ответа:
Neco
ICQ: 247906854
Вопросов: 133
Ответов: 882
Web-сайт:
Профиль | | #15
Добавлено: 01.10.06 19:28
Ты уверена?
у меня работало - форма никогда не активируется. Можно щелкать по ней мышью и при этом набирать текст в блокноте.