Поиск:

Ответ в темуСоздание новой темы Создание опроса
> CFrameWnd & CSplitterWnd, Два простых вопроса 
:(
    Опции темы
patt
Дата 23.4.2005, 21:43 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


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

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



Мажно ли из диалогового приложения по нажатию кнопки вызвать окно CFrameWnd, разделённое CSplitter'ом, если да, то почему не работает?:

void CServDlg::OnBnClickedButton3()
{
frm.Create(NULL,"MY");
frm.ShowWindow(SW_SHOW);
}
------------------------------------------------------
void Frame::OnShowWindow(BOOL bShow, UINT nStatus)
{
CFrameWnd::OnShowWindow(bShow, nStatus);
CCreateContext *pContext;
if(!spliter.CreateStatic(this, 1, 2))
return;
if(!spliter.CreateView(0, 0, RUNTIME_CLASS(CFrameWnd), CSize(200, 300), pContext) || !spliter.CreateView(0, 1, RUNTIME_CLASS(CFrameWnd), CSize(100,100), pContext))
return;

}

smile
PM MAIL ICQ Skype GTalk   Вверх
Step
Дата 25.4.2005, 09:23 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


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

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




Цитата(patt @ 23.4.2005, 21:43)
void Frame::OnShowWindow(BOOL bShow, UINT nStatus)
{

уже поздно
в прекреате, или хотябы в онкреате
Цитата(patt @ 23.4.2005, 21:43)
CCreateContext *pContext;

в месте где вы используете pContext-нулевой его надо проинициализровать указать куда присобачить и т.д. посмотрите поля

надо хотя бы вот так
Код

CCreateContext CreateCont;
        CreateCont.m_pCurrentDoc=NULL;//если есть документ то присобачить
        CreateCont.m_pCurrentFrame=this; //какому фрейму пренадлежит
        CreateCont.m_pLastView=NULL;
        CreateCont.m_pNewDocTemplate=NULL;    //если есть документ то присобачить
        CreateCont.m_pNewViewClass=// а сюда в твоем случае наверное нужно 0, точно не помню



--------------------
- Дурак учится на своих ошибках, умный на чужих.
 - умные учатся у дураков
PM MAIL ICQ   Вверх
patt
Дата 25.4.2005, 21:01 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


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

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



Cо сплитером похоже разобрался, теперь фрейм появляется, но при закрытии выдаёт ошибку - видимо потому что пытается выгрузить всё приложение (если сначала закрыть диалоговое окно то работает) код тот же :

void CServDlg::OnBnClickedButton3()
{
frm.Create(NULL,"MY");
frm.ShowWindow(SW_SHOW);
}
PM MAIL ICQ Skype GTalk   Вверх
Step
Дата 26.4.2005, 09:06 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


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

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



patt,
Цитата(patt @ 23.4.2005, 21:43)
f(!spliter.CreateView(0, 0, RUNTIME_CLASS(CFrameWnd), CSize(200, 300), pContext) || !spliter.CreateView(0, 1, RUNTIME_CLASS(CFrameWnd), CSize(100,100), pContext))

Создаеться два обинаковых экземпляра фрейма и вида - одинаковых


При выходе пытается удалить первый который и удаляет его вместе со вторым а потом пытаеться удалить второй, которого уже нету


--------------------
- Дурак учится на своих ошибках, умный на чужих.
 - умные учатся у дураков
PM MAIL ICQ   Вверх
patt
Дата 26.4.2005, 17:30 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


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

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



Step,

Похоже здесь дело не в этом: ошибка появляется если создаётся фреймовое окно, даже если убрать сплитер и всё остальное:


frm - экземпляр класса CFrameWnd или наследника от CFrameWnd (пробовал и так и так), обьявлен в хэдере;

frm.Create(NULL,"MY");
frm.ShowWindow(SW_SHOW); smile

PM MAIL ICQ Skype GTalk   Вверх
Step
Дата 26.4.2005, 17:35 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


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

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



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


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


 




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


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

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