Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > C/C++: Общие вопросы > Подключение диалога


Автор: SSlavon 30.9.2004, 15:29
Вопрос: как подключить диалог из ресурса, чтобы он отображался в правом окне?
Задача: создать проект (выбрав style Windows Explorer на пятом шаге). Левое окно создается от базового класса CListView, для вывода списка в виде таблицы (сделано). Правое окно (класс CLeftView наследуется от CTreeView по умолчанию, и изменить это не получается) должно представлять из себя фильтр для работы с БД.
Создавал CFormView и пытался подменить CLeftView но получил сообщение, цитирую дословно:
"Debug Assertion Failed!

Program: C:\...\prog.exe
File: viewform.cpp
Line: 69

For information on how your program can cause an assertion
failure, see the Visual C++ documentation on asserts."

Автор: Step 30.9.2004, 15:35
у вас во фрейме есть функция oncreateclient
там идет разделения окна и связывания с видами... загляните туда и вопрос отподет сам собой
Добавлено @ 15:36
а лучше выложите ее сюда и я вам все поправлю

Автор: SSlavon 30.9.2004, 15:50
Да вроде изменил и там, при генерации ни одной ошибки не выдает.
Вот код:
Код

BOOL CMainFrame::OnCreateClient(LPCREATESTRUCT /*lpcs*/,
CCreateContext* pContext)
{
// create splitter window
if (!m_wndSplitter.CreateStatic(this, 1, 2))
 return FALSE;

if (!m_wndSplitter.CreateView(0, 0, RUNTIME_CLASS(CFView), CSize(100, 100), pContext) ||
 !m_wndSplitter.CreateView(0, 1, RUNTIME_CLASS(CDel2View), CSize(100, 100), pContext))
{
 m_wndSplitter.DestroyWindow();
 return FALSE;
}

return TRUE;
}

Автор: Step 30.9.2004, 16:02
а ошибка когда появляеться, сразу при запуске или ...
Добавлено @ 16:04
от чего уноследованы CFView и CDel2View

Автор: SSlavon 30.9.2004, 16:19
class CFView : public CFormView
class CDel2View : public CListView

А ошибка появляется сразу же... к сожалению

Автор: Step 30.9.2004, 16:24
а ты не где не пытаешься вызвать функцию например CListView только при этом производишь привидения типов

ну там например

(CDel2View*) и че нибудь еще

такое как у тебя бывает что ты получаешь указатель, приводишь его к нетому типу и пытаешься вызвать метод этого типа...

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

Автор: SSlavon 30.9.2004, 16:30
Да вроде нигде приведение типов с ListView не использовал.... sad.gif

Автор: Step 30.9.2004, 16:34
ладно я посмотрю дома, что это может быть

Автор: Step 1.10.2004, 08:40
Проблемма была проще чем я думал


диалого для классов производных от СFormView должени иметь свойство STYLE установленное в СHILD

и сразу все заработает

Автор: SSlavon 1.10.2004, 09:51
Что то я совсем затупил...
В каком месте поменять STYLE? B PreCreateWindow или при описании класса?

Автор: Step 1.10.2004, 10:00
заходишь в редактор ресусрсов, выбираешь диалог2 помоему он у тебя связан с CFView смотришь его свойства ищешь Style и устанавливаешь в child....

Автор: SSlavon 1.10.2004, 10:10
Спасибо, заработало! thumbs-up.gif

Автор: Step 1.10.2004, 10:14
если интересно, а думаю будет почитай в факю есть тема про интерфейс (почти самореклама smile.gif)

Автор: SSlavon 1.10.2004, 12:11
ок*)))

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