Visual Basic, .NET, ASP, VBScript
 

   
   
     

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

Страница: 1 |

 

  Вопрос: фуллкастом комбобокс, popup окно Добавлено: 09.10.10 15:22  

Автор вопроса:  Winand | Web-сайт: winandfx.narod.ru
Делаю комбобокс без стрелки справа и с юникодом. Создаю WS_POPUP окно, предварительно зарегистрировав собственный класс окон (окно кстати иногда не создается, но это другой вопрос и искать причину еще даже не начинал). Потом добавляю туда listview контрол. Убирается этот попап, если текстбокс к которому я его "привязал" теряет фокус.

Вижу существенное отличие со стандартным комбобоксом: там всплывающий список убирается даже если щелкнуть по заголовку топ-левел окна, на котором лежит текстбокс. Но фокус-то текстовым полем при этом не теряется, так что у меня оно не срабатывает.

Как сделано тут я понять не могу пока что http://www.codeproject.com/KB/combobox/CustomComboBox.aspx

Ответить

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

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



ICQ: 192496851 

Вопросов: 75
Ответов: 3178
 Профиль | | #1 Добавлено: 09.10.10 16:51
А свой сделать, без API? По идее-то, не должно по внешности будет отличаться от системного

Ответить

Номер ответа: 2
Автор ответа:
 Winand



Вопросов: 87
Ответов: 2795
 Web-сайт: winandfx.narod.ru
 Профиль | | #2
Добавлено: 09.10.10 17:25
По сути я делаю даже не комбобокс, а всплывающий список, который может всплывать где угодно, например около текстового блока.

AgentFire, как вообще это возможно без api) Да и вопрос состоит в том, как сделать скрытие попапа, если я начинаю например перетаскивать форму, к которой он привязан. Видимо нужен SetCapture, но фокус-то находится в текстбоксе.
Сейчас в общем выложу то, что накодил

Ответить

Номер ответа: 3
Автор ответа:
 Winand



Вопросов: 87
Ответов: 2795
 Web-сайт: winandfx.narod.ru
 Профиль | | #3
Добавлено: 09.10.10 17:47
Вот. http://narod.ru/disk/25855170000/combolist.zip.html
Если щелкнуть по заголовку окна, то попап не исчезнет (логично), а лучше бы исчезал.

Ответить

Номер ответа: 4
Автор ответа:
 AgentFire



ICQ: 192496851 

Вопросов: 75
Ответов: 3178
 Профиль | | #4 Добавлено: 09.10.10 18:47
ммм, я понимаю. а что, конкретно, делает SetCapture?..

Ответить

Номер ответа: 5
Автор ответа:
 Winand



Вопросов: 87
Ответов: 2795
 Web-сайт: winandfx.narod.ru
 Профиль | | #5
Добавлено: 09.10.10 19:03
SetCapture(hwnd) передает события мыши указанному окну. То есть, например, щелкаешь в любом месте экрана, а событие маусклик отправляется тому окну, которое захватило экран

Ответить

Номер ответа: 6
Автор ответа:
 AgentFire



ICQ: 192496851 

Вопросов: 75
Ответов: 3178
 Профиль | | #6 Добавлено: 10.10.10 00:10
прекрасно. юзай его. причем тогдыть фокус текстбокса?..

Ответить

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



Вопросов: 87
Ответов: 2795
 Web-сайт: winandfx.narod.ru
 Профиль | | #7
Добавлено: 10.10.10 01:09
на мсдн написано что только foreground (окно с фокусом) может сделать setcapture.

Ответить

Номер ответа: 8
Автор ответа:
 AgentFire



ICQ: 192496851 

Вопросов: 75
Ответов: 3178
 Профиль | | #8 Добавлено: 10.10.10 09:36
делай SetCapture на TextBox. У него же есть .Parent.Bounds ?:)

Ответить

Номер ответа: 9
Автор ответа:
 Winand



Вопросов: 87
Ответов: 2795
 Web-сайт: winandfx.narod.ru
 Профиль | | #9
Добавлено: 10.10.10 11:23
гм приходит 2 подряд WM_CAPTURECHANGED, если проверить GetCapture, то сначала окно нужное закэпчурено, а при втором сообщении кэпчур уже снят (GetCapture=0).

Ответить

Номер ответа: 10
Автор ответа:
 AgentFire



ICQ: 192496851 

Вопросов: 75
Ответов: 3178
 Профиль | | #10 Добавлено: 10.10.10 12:17
другими словами, система тебя на*бывает и злостно устраивает подляки?)

Ответить

Номер ответа: 11
Автор ответа:
 Eugy



Вопросов: 0
Ответов: 73
 Профиль | | #11 Добавлено: 12.10.10 02:11
foregrownd имеет отношение к Z-порядку, а не к фокусу, т.о. ни что не мешает делать SetCapture на listview который имеет foregrownd-родителя. И еще можно бы обрабатывать WM_ACTIVATE, дабы не сбивать фокус с textbox'a.

Ответить

Номер ответа: 12
Автор ответа:
 Winand



Вопросов: 87
Ответов: 2795
 Web-сайт: winandfx.narod.ru
 Профиль | | #12
Добавлено: 12.10.10 20:30
Проще всего было бы найти готовый простой пример подобного контрола) А то может делаю чо-то как-то не так

Ответить

Номер ответа: 13
Автор ответа:
 



Администратор

ICQ: 278109632 

Вопросов: 42
Ответов: 3949
 Web-сайт: domkratt.com
 Профиль | | #13
Добавлено: 13.10.10 09:23
Жаль, нет времени щас посмотреть. Вечером поглядим.

Ответить

Номер ответа: 14
Автор ответа:
 Winand



Вопросов: 87
Ответов: 2795
 Web-сайт: winandfx.narod.ru
 Профиль | | #14
Добавлено: 13.10.10 23:17
Executioner погляди, да.
Вот бы заиметь ToolStripDropDown, но на апи:) http://www.codeproject.com/KB/miscctrl/simplepopup.aspx?msg=2882461

Ответить

Страница: 1 |

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



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