| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > Visual C++/MFC/WTL > CFrameWnd & CSplitterWnd |
| Автор: patt 23.4.2005, 21:43 |
| Мажно ли из диалогового приложения по нажатию кнопки вызвать окно 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; } |
| Автор: Step 25.4.2005, 09:23 | ||||||
уже поздно в прекреате, или хотябы в онкреате
в месте где вы используете pContext-нулевой его надо проинициализровать указать куда присобачить и т.д. посмотрите поля надо хотя бы вот так
|
| Автор: patt 25.4.2005, 21:01 |
| Cо сплитером похоже разобрался, теперь фрейм появляется, но при закрытии выдаёт ошибку - видимо потому что пытается выгрузить всё приложение (если сначала закрыть диалоговое окно то работает) код тот же : void CServDlg::OnBnClickedButton3() { frm.Create(NULL,"MY"); frm.ShowWindow(SW_SHOW); } |
| Автор: Step 26.4.2005, 09:06 | ||
patt,
Создаеться два обинаковых экземпляра фрейма и вида - одинаковых При выходе пытается удалить первый который и удаляет его вместе со вторым а потом пытаеться удалить второй, которого уже нету |
| Автор: patt 26.4.2005, 17:30 |
| Step, Похоже здесь дело не в этом: ошибка появляется если создаётся фреймовое окно, даже если убрать сплитер и всё остальное: frm - экземпляр класса CFrameWnd или наследника от CFrameWnd (пробовал и так и так), обьявлен в хэдере; frm.Create(NULL,"MY"); frm.ShowWindow(SW_SHOW); |
| Автор: Step 26.4.2005, 17:35 |
| у меня была такая проблема, вот когда я сделал два класа фрейма, и создовал виды на их основе и в одном фрейме переопределял вид как написанно в моей статье то все стало как положено |