Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Создать свой компонент в Visual Studio 
:(
    Опции темы
GreenPiece
Дата 19.3.2011, 20:32 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 18
Регистрация: 25.1.2011

Репутация: нет
Всего: нет



Добрый день!
Как создать компонент, чтобы потом использовать его в MFC-приложении?
PM MAIL   Вверх
bsa
Дата 19.3.2011, 23:08 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Модератор
Сообщений: 9185
Регистрация: 6.4.2006
Где: Москва, Россия

Репутация: нет
Всего: 196



GreenPiece, ты абсолютно уверен, что ты хочешь заниматься умирающей технологией (MFC)? Если нет, то обрати внимание на что-то более современное: Qt, .Net...
PM   Вверх
GreenPiece
Дата 20.3.2011, 00:13 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 18
Регистрация: 25.1.2011

Репутация: нет
Всего: нет



Ну да, полазив по нету, я понял, что MFC - это что-то не очень актуальное, но, видимо, мне придется заниматься именно этим, по крайней мере, на первых порах... Поэтому ответ на мой вопрос по прежнему видится необходимым.
PM MAIL   Вверх
bsa
Дата 20.3.2011, 00:55 (ссылка) |    (голосов:2) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Модератор
Сообщений: 9185
Регистрация: 6.4.2006
Где: Москва, Россия

Репутация: нет
Всего: 196



Цитата(GreenPiece @  20.3.2011,  00:13 Найти цитируемый пост)
Ну да, полазив по нету, я понял, что MFC - это что-то не очень актуальное, но, видимо, мне придется заниматься именно этим, по крайней мере, на первых порах... 

преподаватель/начальник заставляет? В противном случае стоит от него отказаться. ИМХО.

M
bsa
тему переношу в соответствующий MFC раздел

PM   Вверх
GreenPiece
Дата 20.3.2011, 12:18 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 18
Регистрация: 25.1.2011

Репутация: нет
Всего: нет



Цитата(bsa @ 20.3.2011,  00:55)

преподаватель/начальник заставляет?

Угу. А так как с MFC я раньше не работал, если было что-то оконное, то делал это в Билдере или на Win API, то это для меня пока темный лес.
PM MAIL   Вверх
Earnest
Дата 20.3.2011, 17:15 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Экс. модератор
Сообщений: 5962
Регистрация: 17.6.2005
Где: Рязань

Репутация: 87
Всего: 183



GreenPiece, полного аналога билдеровским компонентам в MFC нет. Можно создать свой класс контрола, чтобы использовать в MFC-приложении. Просто наследуешься от подходящего класса и пишешь код, вот и все.


--------------------
...
PM   Вверх
GreenPiece
Дата 20.3.2011, 17:22 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 18
Регистрация: 25.1.2011

Репутация: нет
Всего: нет



А если мне нужно сделать группу edit'ов с label'ами вида:

label1: * * * * *
label2: * * * * *
label3: * * * * *
* - это edit

как можно это реализовать?
PM MAIL   Вверх
Earnest
Дата 20.3.2011, 17:50 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Экс. модератор
Сообщений: 5962
Регистрация: 17.6.2005
Где: Рязань

Репутация: 87
Всего: 183



Можно по-разному. 
Например так: создаем диалоговую панель со всеми этими полями. В редакторе ресурсов используем шаблон для диалог-бара (нужно чтобы был стиль Child и без заголовка и рамки). Пишем класс диалога, который будет обрабатывать эти контролы: заполнять, считывать данные (DoDataExchange), а также, если надо, энэблить-дизаблить или как-то еще обновлять (т.е. обработчики OnUpdate для полей).

Далее, в диалог-клиент просто вставляем эту панель. В диалоге ресурсов этого не сделать, придется в коде (CreateDialog где-нибудь в районе OnInitDialog родительского диалога). Чтобы не парится с позицией, я обычно в главном диалоге рисую статический контрол-рамку нужного размера; затем в OnInitDialog нахожу этот контрол (для этого ид-р должен быть не безымянный) и создаю панель в этих координатах. Далее нужно передать в нужных местах управление соответствующим функциям панели: в OnCmdMsg, если есть обработчики команд, и в DoDataExchange. Возможно, еще где-то, зависит от задачи.
Да, чтобы навигация по TAB была сквозная, панели в диалоге ресурсов нужно включить свойство Control Parent.

Еще можно вместо кучи контролов использовать таблицу. В MFC, правда, готовой нет, но есть куча MFC-совместимых контролов в сети. Либо можно использовать список (ListView) 


--------------------
...
PM   Вверх
GreenPiece
Дата 20.3.2011, 18:18 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 18
Регистрация: 25.1.2011

Репутация: нет
Всего: нет



Earnest, спасибо большое! Классно все объяснил, просто и понятно! smile 
PM MAIL   Вверх
GreenPiece
Дата 20.3.2011, 21:42 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 18
Регистрация: 25.1.2011

Репутация: нет
Всего: нет



Извините, пожалуйста, за глупый вопрос, в воскресенье вечером туплю что-то...

Вот есть MFC dialog-based application, назовем его оригинально: TestMFCApp.
Создал ресурс по шаблону DialogBar.
Есть процедура обработки BOOL CTestMFCAppDlg::OnInitDialog(). Не понимаю я, как теперь на форме отобразить этот мой диалог...

В сети есть примеры для SDI и MDI, там есть функция int CMainFrame::OnCreate(LPCREATESTRUCT lpCreateStruct), там создают нужный диалог, и все работает. А вот в случае dialog-based как-то не так.
PM MAIL   Вверх
Earnest
Дата 21.3.2011, 08:02 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Экс. модератор
Сообщений: 5962
Регистрация: 17.6.2005
Где: Рязань

Репутация: 87
Всего: 183



Там, вероятно, создают диалоговую панель CDialogBar. Это не то, что тебе нужно. Я предложила тебе использовать этот шаблон ресурса, т.к. он подходит. Но дочернюю панель нужно наследовать от именно диалога (CDialog). А создать ее - в OnInitDialog родительского диалога (CreateDialog) - как немодальный дочерний (и видимый). Так что примеры вышеуказанные вообще не о том.


--------------------
...
PM   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Visual C++/MFC/WTL | Следующая тема »


 




[ Время генерации скрипта: 0.0488 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.