![]() |
|
|
![]()
|
|
| GreenPiece |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 18 Регистрация: 25.1.2011 Репутация: нет Всего: нет |
Добрый день!
Как создать компонент, чтобы потом использовать его в MFC-приложении? |
|||
|
||||
| bsa |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 9185 Регистрация: 6.4.2006 Где: Москва, Россия Репутация: нет Всего: 196 |
GreenPiece, ты абсолютно уверен, что ты хочешь заниматься умирающей технологией (MFC)? Если нет, то обрати внимание на что-то более современное: Qt, .Net...
|
|||
|
||||
| GreenPiece |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 18 Регистрация: 25.1.2011 Репутация: нет Всего: нет |
Ну да, полазив по нету, я понял, что MFC - это что-то не очень актуальное, но, видимо, мне придется заниматься именно этим, по крайней мере, на первых порах... Поэтому ответ на мой вопрос по прежнему видится необходимым.
|
|||
|
||||
| bsa |
|
||||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 9185 Регистрация: 6.4.2006 Где: Москва, Россия Репутация: нет Всего: 196 |
преподаватель/начальник заставляет? В противном случае стоит от него отказаться. ИМХО.
|
||||
|
|||||
| GreenPiece |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 18 Регистрация: 25.1.2011 Репутация: нет Всего: нет |
Угу. А так как с MFC я раньше не работал, если было что-то оконное, то делал это в Билдере или на Win API, то это для меня пока темный лес. |
|||
|
||||
| Earnest |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 5962 Регистрация: 17.6.2005 Где: Рязань Репутация: 87 Всего: 183 |
GreenPiece, полного аналога билдеровским компонентам в MFC нет. Можно создать свой класс контрола, чтобы использовать в MFC-приложении. Просто наследуешься от подходящего класса и пишешь код, вот и все.
-------------------- ... |
|||
|
||||
| GreenPiece |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 18 Регистрация: 25.1.2011 Репутация: нет Всего: нет |
А если мне нужно сделать группу edit'ов с label'ами вида:
label1: * * * * * label2: * * * * * label3: * * * * * * - это edit как можно это реализовать? |
|||
|
||||
| Earnest |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 5962 Регистрация: 17.6.2005 Где: Рязань Репутация: 87 Всего: 183 |
Можно по-разному.
Например так: создаем диалоговую панель со всеми этими полями. В редакторе ресурсов используем шаблон для диалог-бара (нужно чтобы был стиль Child и без заголовка и рамки). Пишем класс диалога, который будет обрабатывать эти контролы: заполнять, считывать данные (DoDataExchange), а также, если надо, энэблить-дизаблить или как-то еще обновлять (т.е. обработчики OnUpdate для полей). Далее, в диалог-клиент просто вставляем эту панель. В диалоге ресурсов этого не сделать, придется в коде (CreateDialog где-нибудь в районе OnInitDialog родительского диалога). Чтобы не парится с позицией, я обычно в главном диалоге рисую статический контрол-рамку нужного размера; затем в OnInitDialog нахожу этот контрол (для этого ид-р должен быть не безымянный) и создаю панель в этих координатах. Далее нужно передать в нужных местах управление соответствующим функциям панели: в OnCmdMsg, если есть обработчики команд, и в DoDataExchange. Возможно, еще где-то, зависит от задачи. Да, чтобы навигация по TAB была сквозная, панели в диалоге ресурсов нужно включить свойство Control Parent. Еще можно вместо кучи контролов использовать таблицу. В MFC, правда, готовой нет, но есть куча MFC-совместимых контролов в сети. Либо можно использовать список (ListView) -------------------- ... |
|||
|
||||
| GreenPiece |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 18 Регистрация: 25.1.2011 Репутация: нет Всего: нет |
Earnest, спасибо большое! Классно все объяснил, просто и понятно!
|
|||
|
||||
| GreenPiece |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 18 Регистрация: 25.1.2011 Репутация: нет Всего: нет |
Извините, пожалуйста, за глупый вопрос, в воскресенье вечером туплю что-то...
Вот есть MFC dialog-based application, назовем его оригинально: TestMFCApp. Создал ресурс по шаблону DialogBar. Есть процедура обработки BOOL CTestMFCAppDlg::OnInitDialog(). Не понимаю я, как теперь на форме отобразить этот мой диалог... В сети есть примеры для SDI и MDI, там есть функция int CMainFrame::OnCreate(LPCREATESTRUCT lpCreateStruct), там создают нужный диалог, и все работает. А вот в случае dialog-based как-то не так. |
|||
|
||||
| Earnest |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 5962 Регистрация: 17.6.2005 Где: Рязань Репутация: 87 Всего: 183 |
Там, вероятно, создают диалоговую панель CDialogBar. Это не то, что тебе нужно. Я предложила тебе использовать этот шаблон ресурса, т.к. он подходит. Но дочернюю панель нужно наследовать от именно диалога (CDialog). А создать ее - в OnInitDialog родительского диалога (CreateDialog) - как немодальный дочерний (и видимый). Так что примеры вышеуказанные вообще не о том.
-------------------- ... |
|||
|
||||
![]()
|
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | Visual C++/MFC/WTL | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |