Visual Basic, .NET, ASP, VBScript
 

   
   
     

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

Страница: 1 |

 

  Вопрос: API Listbox Добавлено: 31.05.06 15:31  

Автор вопроса:  rebel | ICQ: 36063058 
В порыве своих суицидальных фантазий решил написать свой ListBox и вот сталкнулся с проблемой:
При нажатии DropDown Button должен выскакивать список (обычный, как у стандартного комбобокса). Список создаю так
CreateWindowEx(dwStyleEx, "ListBox", "myList", WS_VISIBLE Or WS_POPUPOr dwStyle, nLeft, nTop, nWidth, nHeight, hParent, 0, App.hInstance, ByVal 0)
Список создается, НО! При попытке добавить значение в этот список ничего не получается!!!
Добавляю так:
SendMessage hList, LB_ADDSTRING, 0, ByVal "test1"
Если создавать список так:
CreateWindowEx(dwStyleEx, "ListBox", "myList", WS_VISIBLE Or WS_CHILD Or dwStyle, nLeft, nTop, nWidth, nHeight, hParent, 0, App.hInstance, ByVal 0)
То все работает как надо!
Вопрос: как все же добавлять в список значения с флагом WS_POPUP?
Или возможны альтернативные варианты создания всплывающего листа?

Заранее спасибо!

Ответить

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

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



ICQ: 249094859 

Вопросов: 0
Ответов: 310
 Профиль | | #1 Добавлено: 01.06.06 12:14
Альтернатива - делать видимым обычный контрол ComboBox.

Ответить

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



Вопросов: 0
Ответов: 1066
 Профиль | | #2 Добавлено: 01.06.06 14:21
Альтернатива - читать msdn.
К каким окнам может быть применено WS_POPUP.

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

Ответить

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



ICQ: 36063058 

Вопросов: 1
Ответов: 3
 Профиль | | #3 Добавлено: 01.06.06 16:09
Да, такая мысль у меня была! Но вот не могу найти название класса (Просто форма), что бы можно было создать ее через CreateWindowEx.

Ответить

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



ICQ: 334781088 

Вопросов: 108
Ответов: 2822
 Профиль | | #4 Добавлено: 01.06.06 16:19
А обязательно создавать его через CreateWindowEx?
Ну если уж так надо - RegisterClassEx и CreateWindowEx.

Ответить

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



Вопросов: 0
Ответов: 1066
 Профиль | | #5 Добавлено: 01.06.06 16:39
Можно родителем обычную vb-форму использовать.
Если охота самому сделать - регистрируешь класс.
Название - любое, например "mysuperpuperclass".
Заполняешь структуру для передачи в RegisterClassEx и вызываешь. Если всё нормально заполнил - ф-ция вернет ненулевой результат.
И затем создаёшь окно своего класса.
Заодно напишешь WndProc (она будет совсем простенькая)

Ответить

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



ICQ: 36063058 

Вопросов: 1
Ответов: 3
 Профиль | | #6 Добавлено: 01.06.06 16:50
Самому делать не охота!!! НО, когда используешь vb форму, в качестве родителя, то есть один маленький нюанс, а именно, если этот контрол в будущем будет стоять в модальной форме, то открытия списка (в нашем случаи родительскую форму немодальную) приводит естественно к ошибке. Попробую зарегистрировать свою форму…. 8)

Ответить

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



Вопросов: 0
Ответов: 1066
 Профиль | | #7 Добавлено: 01.06.06 17:54
С чего это вдруг открытие списка приводит к ошибке?
Если ты хочешь заполнять список из того кода, который вызвал модальную форму, естественно ничего не получится. Заполнять лист надо в Form_Load той формы, где листбокс.

Ответить

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



ICQ: 36063058 

Вопросов: 1
Ответов: 3
 Профиль | | #8 Добавлено: 01.06.06 18:18
В общем, проблема разрешилась! Всем спасибо за советы. На днях попробую зарегистрировать свой класс.

Решение проблемы:
По запаре не заметил, что при создании окна, помимо прочих флагов, передавался еще и LBS_OWNERDRAWFIXED! В нем вся проблема и была. =) Сказывается не большой опыт работы с api! Сори

Ответить

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



ICQ: 254226129 

Вопросов: 30
Ответов: 107
 Профиль | | #9 Добавлено: 01.06.06 18:33
Да можно просто взять пример SNE и все дела

Ответить

Страница: 1 |

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



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