Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Visual C++/MFC/WTL > Окно из одного CComboBox


Автор: Nuzur 30.1.2007, 18:37

Не хочетсо создавать диалог для одного контрла. Хочу динамически его создать сделать модальным и при выборе чего то-то там из него закрыть.
Как такое сделать?

Я думал у него есть что-то в духе DoModal() или что-то схожее но не нашел, подскажите пожалуйста!

Автор: KelTron 30.1.2007, 19:47
Не хочется, а придется. Стандартные диалоги у которых есть DoModal это 
CFileDialog, CColorDialog, CFontDialog, CFindReplaceDialog, CPrintDialog, CPageSetupDialog 
я думаю из названий понятно для чего они

Автор: Nuzur 31.1.2007, 12:03
KelTron, причем тут одно к другом? Каждая компонента по-сути окно. Вот так вот срабатывает 50 на 50

Код

    CComboBox * ComboList;
    ComboList = new CComboBox;
    CRect Rect;
    this->GetWindowRect(Rect);

    ComboList->Create
                    (
                        CBS_DROPDOWNLIST,
                        Rect,
                        this,
                        WM_USER + 100
                     );

    ComboList->ShowWindow(SW_SHOWNORMAL);


Так что я думаю что не прийдется. Просто я еще не знаю точно как заставить быть модальным и работать на 100.

ЗЫ Типа у CDialog DoModal нет? Непонятно мне к чему вы мне писали сие. Если конструктивных идей нет то пиши лучше в личку.

Автор: Earnest 31.1.2007, 13:31
У "просто" окна есть RunModalLoop. Но не думаю, что вызывать его для child-окна - хорошая идея.

Автор: KelTron 31.1.2007, 17:24
Цитата(Nuzur @  31.1.2007,  12:03 Найти цитируемый пост)
 Типа у CDialog DoModal нет? Непонятно мне к чему вы мне писали сие. Если конструктивных идей нет то пиши лучше в личку.

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

Автор: Nuzur 31.1.2007, 19:13
KelTron, я в курсе, иначе тему не поднимал бы.

Earnest, насколько я понимаю его можно "причепить" при создании?
А почему плохо. к чему сие может привести нехорошему? Я в принцЫпе уже сделал на диалоге, но идея мне понравилась.

Автор: Earnest 1.2.2007, 10:05
Цитата(Nuzur @  31.1.2007,  20:13 Найти цитируемый пост)
насколько я понимаю его можно "причепить" при создании?

Не поняла вопроса.
Почему плохо - объяснить словами не могу... позвоночником чувствую smile  RunModalLoop запускает отдельный цикл выборки\обработки сообщений, относящихся к окну и его потомкам... а, скажем, выпадающий из комбобокса список потомком не является...
Лучше такие вещи делать на подложке (на диалоге, как ты сделал, или на поп-ап окне). Кстати, модальный режим тут не особо подходит, мне кажется: что если пользователь передумает выбирать? Как ему отказаться? Лучше делать не модальное поп-ап окно и закрывать его при потере фокуса. 

Автор: Nuzur 1.2.2007, 11:48
Earnest, Да такой вариант мне тоже нравится, но ето будет выпадать из общей структуры проекта. что плохо. Тоесть не учить же пользователя что в етом месте программы мы так а в етом вот так.

Цитата

Не поняла вопроса.

Я уже тоже smile Дурь какую-то сморозилsmile Конец рАбочего дня...ёма-ё

Цитата

Почему плохо - объяснить словами не могу... позвоночником чувствую smile  

Я вашему позвоночнику доверяю smile

Ладно резюме: Идею ф топку!

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)