Visual Basic, .NET, ASP, VBScript
 

   
   
     

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

Страница: 1 | 2 |

 

  Вопрос: Всегда неактивное окно Добавлено: 28.09.06 20:22  

Автор вопроса:  Ирина
КАК????????????????????????????????

Ответить

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

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



ICQ: 789764 

Вопросов: 90
Ответов: 230
 Web-сайт: 4elovekssn.blog.ru
 Профиль | | #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-сайт: sham.clan.su
 Профиль | | #3
Добавлено: 28.09.06 22:47
Короче неактивная, но постоянно видимая?

Ответить

Номер ответа: 4
Автор ответа:
 -АлександР-



Вопросов: 55
Ответов: 1008
 Web-сайт: sham.clan.su
 Профиль | | #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-сайт: hw.t-k.ru
 Профиль | | #6
Добавлено: 29.09.06 00:29
сабклассинг с перехватом WM_ACTIVATE, или че-то подобное, сообщения?

Ответить

Номер ответа: 7
Автор ответа:
 vito



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

Вопросов: 23
Ответов: 879
 Web-сайт: softvito.narod2.ru
 Профиль | | #7
Добавлено: 29.09.06 01:47
sne

сабклассинг с перехватом WM_ACTIVATE, или че-то подобное, сообщения?


Очень коротко и лаконично. Никакого флуда.:)
Объясни подробнее, если знаешь, а то мне тоже стало интересно.

Ответить

Номер ответа: 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-сайт: neco.pisem.net
 Профиль | | #13
Добавлено: 01.10.06 15:57
Гы-гы:
Public Const WS_EX_NOACTIVATE As Long = &H8000000

Ответить

Номер ответа: 14
Автор ответа:
 Ирина



Вопросов: 2
Ответов: 15
 Профиль | | #14 Добавлено: 01.10.06 19:07
WS_EX_NOACTIVATE As Long = &H8000000 - тоже не спасает.

Ответить

Номер ответа: 15
Автор ответа:
 Neco



ICQ: 247906854 

Вопросов: 133
Ответов: 882
 Web-сайт: neco.pisem.net
 Профиль | | #15
Добавлено: 01.10.06 19:28
Ты уверена?
SetWindowLong Head.hWnd, GWL_EXSTYLE, GetWindowLong(Me.hWnd, GWL_EXSTYLE) + WS_EX_NOACTIVATE

у меня работало - форма никогда не активируется. Можно щелкать по ней мышью и при этом набирать текст в блокноте.

Ответить

Страница: 1 | 2 |

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



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