Поиск:

Ответ в темуСоздание новой темы Создание опроса
> CDialogBar ошибка при открытии приложения, как фиксить? 
:(
    Опции темы
B2_Russia
Дата 5.2.2006, 22:45 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


В доску свой :)
**


Профиль
Группа: Участник
Сообщений: 344
Регистрация: 3.7.2003
Где: Тверь

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



Вобщем приложение MDI В MainFrame все делаю как написано в MSDN

В ресурсы добавил DIALOGBAR Вызываю Wizard соглашаюсь с предложением создать новый класс и... Не нахожу там CDialogBar для того, чтобы унаследоваться от него!!! Наследуюсь от CDialog переписываю родительский класс везде на CDialogBar!
F5 -> Ошибка!!!
Убираю из CMainFrame::OnCreate все относящееся к нему и всеравно ошибка.
Убираю объявление CDlgTools m_wndTools; из MainFrm.h все работает!!!

Делаю все аналогично только объявляю его как CDlgTools *m_wndTools; Работает, но при закрытии приложения ошибка и приложение завершается с ликами.

Чую что не так создаю.
Просвятите как надо, кто знает?
PM WWW ICQ   Вверх
Dreamer_0x01
Дата 5.2.2006, 23:13 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Терминатор
**


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

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



Цитата(B2_Russia @ 5.2.2006, 22:45 Найти цитируемый пост)

Чую что не так создаю.


Именно. Посмотрите иерахию классов MFC:

СWnd /CControlBar/CDialogBar

и соответственно

CWnd/CDialog.

Вы пытаетесь наследовать класс от CDialog, а работать с CDialogBar, но ведь класс CDialog не является базовым для CDialogBar.





--------------------
Нет ничего невозможного. Есть цели, и есть время и силы на их достижение.
PM ICQ   Вверх
B2_Russia
Дата 5.2.2006, 23:27 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


В доску свой :)
**


Профиль
Группа: Участник
Сообщений: 344
Регистрация: 3.7.2003
Где: Тверь

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



Значит вопрос в другом?
Как правильно создать/работать c CBialogBar?
Просто забирать оттуда контролы и работать с ними в CMainFrame?
Добавлено @ 23:32
Однако,

не стал переопределять класс, просто объявил переменную как CDialogBox все как в MSDN ;)

Апшипка!
PM WWW ICQ   Вверх
Dreamer_0x01
Дата 6.2.2006, 00:52 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Терминатор
**


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

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



а можно ссылку на MSDN, где это описано, и кусок кода для сравнения?


--------------------
Нет ничего невозможного. Есть цели, и есть время и силы на их достижение.
PM ICQ   Вверх
B2_Russia
Дата 6.2.2006, 08:56 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


В доску свой :)
**


Профиль
Группа: Участник
Сообщений: 344
Регистрация: 3.7.2003
Где: Тверь

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



Сцылка: http://msdn.microsoft.com/library/default....olcolCreate.asp

Код один в один...
Сам поражаюсь, но знаю что чудес не бывает smile
Может в пределах проекта что намудрил, не знаю smile Могу конечно новый создать, тем более что еще ничего не делал кроме диалога, но хотелось бы разобраться.

Код

int CMainFrame::OnCreate(LPCREATESTRUCT lpCreateStruct)
{
    if (CMDIFrameWnd::OnCreate(lpCreateStruct) == -1)
        return -1;
  EnableDocking(CBRS_ALIGN_ANY);

  if (!m_wndDlgBar.Create(this, IDD_DIALOGBAR_TOOLS,
    CBRS_LEFT|CBRS_TOOLTIPS|CBRS_FLYBY, IDD_DIALOGBAR_TOOLS))
  {
    TRACE0("Failed to create DlgBar\n");
    return –1;      // Fail to create.
  }    

    if (!m_wndToolBar.CreateEx(this, TBSTYLE_FLAT, WS_CHILD | WS_VISIBLE | CBRS_TOP
        | CBRS_GRIPPER | CBRS_TOOLTIPS | CBRS_FLYBY | CBRS_SIZE_DYNAMIC) ||
        !m_wndToolBar.LoadToolBar(IDR_MAINFRAME))
    {
        TRACE0("Failed to create toolbar\n");
        return -1;      // fail to create
    }

    if (!m_wndStatusBar.Create(this) ||
        !m_wndStatusBar.SetIndicators(indicators,
          sizeof(indicators)/sizeof(UINT)))
    {
        TRACE0("Failed to create status bar\n");
        return -1;      // fail to create
    }

    // TODO: Delete these three lines if you don't want the toolbar to
    //  be dockable
    m_wndToolBar.EnableDocking(CBRS_ALIGN_ANY);
    EnableDocking(CBRS_ALIGN_ANY);
    DockControlBar(&m_wndToolBar);

    return 0;
}




Это сообщение отредактировал(а) B2_Russia - 6.2.2006, 08:57
PM WWW ICQ   Вверх
Earnest
Дата 6.2.2006, 19:05 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


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

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



Во первых скажи чего ошибка - компиляции или выполнения.
В первом случае приведи строку, на которую ругается и текст ошибки, во втором - подробности "не работает".

Способ замены базового класса в том, что создал визард - вполне нормальный, сама так делала, пока не перестала визардом пользоваться... Только вряд ли все сводится к замене базового класса, наверняка нужно убрать\заменить некоторые методы, ибо как уже сказал Dreamer, это разные классы

Так что давай подробнее



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


В доску свой :)
**


Профиль
Группа: Участник
Сообщений: 344
Регистрация: 3.7.2003
Где: Тверь

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



Так по поводу "не-работает как в MSDN" проехали, вопрос почему я не могу унаследоваться от CDialogBar? И обрабатывать все в нем, мне это даже выгоднее в плане модульности, вобщем хочу чтоб было так smile
Добавлено @ 21:56
Вобщем создал заново проект все сделал аналогично MSDN токма всеже сделал свой класс унаследовав его от CDialogBar
Кстати, Dreamer_0x01, я не наследовался от CDialog и ни в коем случае не хотел работать с ним как с диалогом smile


PM WWW ICQ   Вверх
Earnest
Дата 6.2.2006, 22:21 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


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

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



Цитата(B2_Russia @ 6.2.2006, 21:56 Найти цитируемый пост)

вопрос почему я не могу унаследоваться от CDialogBar?

Можешь, конечно



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


Терминатор
**


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

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




Цитата(B2_Russia @ 6.2.2006, 21:56 Найти цитируемый пост)

Кстати, Dreamer_0x01, я не наследовался от CDialog и ни в коем случае не хотел работать с ним как с диалогом


Да? А это я наверное сам придумал?

Цитата(B2_Russia @ 5.2.2006, 22:45 Найти цитируемый пост)

Не нахожу там CDialogBar для того, чтобы унаследоваться от него!!! Наследуюсь от CDialog переписываю родительский класс везде на CDialogBar


То, что ты не объявляешь класс как производный от CDialog, а заменяешь своим, совсем не означает, что визард не налепит всяких соответствующих макросов именно для класса CDialog.



--------------------
Нет ничего невозможного. Есть цели, и есть время и силы на их достижение.
PM ICQ   Вверх
B2_Russia
Дата 7.2.2006, 08:21 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


В доску свой :)
**


Профиль
Группа: Участник
Сообщений: 344
Регистрация: 3.7.2003
Где: Тверь

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



Действительно может налепить, но как с диалогом я с ним не работаю smile
Конструктор еще пришлось поменять...
Повторил снова - все работает, хрен его знает что было не так...
PM WWW ICQ   Вверх
Dreamer_0x01
Дата 7.2.2006, 15:25 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Терминатор
**


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

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



Цитата(B2_Russia @ 7.2.2006, 08:21 Найти цитируемый пост)

Повторил снова - все работает, хрен его знает что было не так...

может быть, все дело было в "Rebuild All" ? smile



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


 




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


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

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