Дочернее окно забирает фокус...

Программирование на Visual Basic, главный форум. Обсуждение тем программирования на VB 1—6.
Даже если вы плохо разбираетесь в VB и программировании вообще — тут вам помогут. В разумных пределах, конечно.
Правила форума
Темы, в которых будет сначала написано «что нужно сделать», а затем просьба «помогите», будут закрыты.
Читайте требования к создаваемым темам.
drronnie
Постоялец
Постоялец
 
Сообщения: 793
Зарегистрирован: 04.03.2002 (Пн) 22:29
Откуда: Украина, Алчевск

Дочернее окно забирает фокус...

Сообщение drronnie » 29.01.2008 (Вт) 20:17

Господа, подскажите пожалуйста...
По клику кнопки появляется окно, но нужно, чтобы оно не забирало фокус у родителя... типа как в комбике.
Заранее спасибо
Компиляция - перевод словесного поноса в машинный код.

Lumen
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 841
Зарегистрирован: 03.12.2005 (Сб) 16:09
Откуда: Брянск

Сообщение Lumen » 30.01.2008 (Ср) 1:54

А если самому возвращать фокус родителю?
И что такое комбик? Усилок и колонки в одном флаконе?
Подпись проходит рефакторинг

Денис
Доктор VB наук
Доктор VB наук
Аватара пользователя
 
Сообщения: 2734
Зарегистрирован: 07.11.2006 (Вт) 13:55
Откуда: Ейск, Краснодарский край

Сообщение Денис » 30.01.2008 (Ср) 8:57

Комбик это комбобокс, я полагаю. А чтобы сделать окно таким, как надо, надо послать ему нужные сообщения... Подробнее не скажу, но на форуме видел обсуждение. Там еще с окошком смайликов в кипе сравнивали
Программирование — богоизбранная дисциплина! Если бог и есть, то вселенную он скомпилировал, не иначе.

Gemini
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 390
Зарегистрирован: 24.07.2002 (Ср) 14:15
Откуда: Ozersk

Сообщение Gemini » 30.01.2008 (Ср) 10:15

Declare Function SetCapture Lib "user32" (ByVal hWnd As Long) As Long
Declare Function ReleaseCapture Lib "user32" () As Long
Declare Function GetCursorPos Lib "user32" (lpPoint As POINTAPI) As Long
Declare Function WindowFromPoint Lib "user32" (ByVal xPoint As Long, ByVal yPoint As Long) As Long

Попробуй захват при создании окна
В нашем деле главное ЛОГИКА.

косил косой косой косой.

drronnie
Постоялец
Постоялец
 
Сообщения: 793
Зарегистрирован: 04.03.2002 (Пн) 22:29
Откуда: Украина, Алчевск

Сообщение drronnie » 30.01.2008 (Ср) 12:00

Может есть исходник комбобокса, который построен не на OwnerDraw стандартного, а полность написан "с нуля"?

Мне нужно как в QIP, кликаешь по иконке смайлика - появляется окно со смайликами, но фокус на окне с сообщениями, если кликаешь вне окна со смайликами или по нему - окно со смайликами исчезает.

Lumen, показать окно без фокуса можно так:
Код: Выделить всё
SetWindowPos frmMySmiles.hWnd, HWND_NOTOPMOST, ptCursor.X, rcTask.Top + tbOutput.Height, 0, 0, SWP_NOACTIVATE Or SWP_SHOWWINDOW Or SWP_NOSIZE
и ничего возвращать никому не нужно... вопрос в том как отловить клик не по форме со смайликами...
Денис скорее ты говоришь про стили

Gemini Поведение должно быть типа как у контекстного меню.
Компиляция - перевод словесного поноса в машинный код.

Gemini
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 390
Зарегистрирован: 24.07.2002 (Ср) 14:15
Откуда: Ozersk

Сообщение Gemini » 30.01.2008 (Ср) 15:55

1.Захватываешь окно SetCapture

2. в Form_MouseDown
XY as PointAPI
Call GetCursorPos(XY)
FndHwnd = WindowFromPoint(XY.x, XY.y)
Если hwnd = окно со смайликом то...
Если hwnd = Родительское окно то...
Если не то и не другое то .....

3. отпускаем окно ReleaseCapture
В нашем деле главное ЛОГИКА.

косил косой косой косой.

alibek
Большой Человек
Большой Человек
 
Сообщения: 14205
Зарегистрирован: 19.04.2002 (Пт) 11:40
Откуда: Russia

Сообщение alibek » 31.01.2008 (Чт) 9:20

Задай у появляющегося окна соответствующий стиль.
Какой именно, уже не помню, посмотри в справке.
Lasciate ogni speranza, voi ch'entrate.

drronnie
Постоялец
Постоялец
 
Сообщения: 793
Зарегистрирован: 04.03.2002 (Пн) 22:29
Откуда: Украина, Алчевск

Сообщение drronnie » 31.01.2008 (Чт) 9:53

А какой стиль? Я в МСДН не нашёл...
Впрочем если кому интересно, решил так:

При показе окна вышеупомянутым способом ставлю хук на мышу, и при Down или Up любой мышиной кнопки проверяю WindowFromPoint. Если это окно со смайликами (или один из его чайлдов), то ничего не делаю, а если нет, то скрываю окно со смайликами и убираю хук.

При клике по окну со смайликами делаю что мне нужно и снова таки убираю хук и скрываю окно...

Новерно с хуком это через ж...у, но в принципе проблему решил, и поведение такое как мне нужно.
Компиляция - перевод словесного поноса в машинный код.

Antonariy
Повелитель Internet Explorer
Повелитель Internet Explorer
Аватара пользователя
 
Сообщения: 4824
Зарегистрирован: 28.04.2005 (Чт) 14:33
Откуда: Мимо проходил

Сообщение Antonariy » 31.01.2008 (Чт) 10:18

drronnie
Посмотри мой DropDown в кирпичах, там создается окно с нужными тебе стилями.
Лучший способ понять что-то самому — объяснить это другому.


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

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

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

    TopList