создание дополнительных объектов SDI
От: volph  
Дата: 18.04.02 06:03
Оценка:
Все время мне нужно было один фрейм в SDI приложении, и это за меня делал визард при создании проекта. Но вот понадобилось сделать несколько фреймов. Как добавить класс какого-то нового фрейма, например CEditView, что-бы как-то создать для него и View и Doc класс?
Re: создание дополнительных объектов SDI
От: Игорь Вартанов Ниоткуда  
Дата: 18.04.02 07:42
Оценка:
Здравствуйте volph, Вы писали:

V>Все время мне нужно было один фрейм в SDI приложении, и это за меня делал визард при создании проекта. Но вот понадобилось сделать несколько фреймов. Как добавить класс какого-то нового фрейма, например CEditView, что-бы как-то создать для него и View и Doc класс?


Попробуй задать свой вопрос по-другому, что-то смысл неясен...
---
С уважением,
Игорь
Re: создание дополнительных объектов SDI
От: Сэр_Тимуркин Россия http://JNbveh.narod.ru
Дата: 18.04.02 21:27
Оценка:
Здравствуйте volph, Вы писали:

V>Все время мне нужно было один фрейм в SDI приложении, и это за меня делал визард при создании проекта. Но вот понадобилось сделать несколько фреймов. Как добавить класс какого-то нового фрейма, например CEditView, что-бы как-то создать для него и View и Doc класс?


Insert > New Class > MFC class Выбираешь основу CEditView. Создаешь CSplliterWnd объект в классе CMainFrame.

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(CLeftView), CSize(200, 100), pContext) ||
// твой новый вид
        !m_wndSplitter.CreateView(0, 1, RUNTIME_CLASS(CMRunSEView), CSize(100, 100), pContext))
    {
        m_wndSplitter.DestroyWindow();
        return FALSE;
    }

    return TRUE;
}
С наилучшими пожеданиями, Сэр Тимуркин.
Re[2]: создание дополнительных объектов SDI
От: volph  
Дата: 19.04.02 04:16
Оценка:
Здравствуйте Сэр_Тимуркин, Вы писали:

СТ>Здравствуйте volph, Вы писали:


V>>Все время мне нужно было один фрейм в SDI приложении, и это за меня делал визард при создании проекта. Но вот понадобилось сделать несколько фреймов. Как добавить класс какого-то нового фрейма, например CEditView, что-бы как-то создать для него и View и Doc класс?


СТ>Insert > New Class > MFC class Выбираешь основу CEditView. Создаешь CSplliterWnd объект в классе CMainFrame.


СТ>
СТ>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(CLeftView), CSize(200, 100), pContext) ||
СТ>// твой новый вид
СТ>        !m_wndSplitter.CreateView(0, 1, RUNTIME_CLASS(CMRunSEView), CSize(100, 100), pContext))
СТ>    {
СТ>        m_wndSplitter.DestroyWindow();
СТ>        return FALSE;
СТ>    }

СТ>    return TRUE;
СТ>}
СТ>


Соглачен все отлично, но как создать для класса CLeftView класс CLeftDoc ???
Re[3]: создание дополнительных объектов SDI
От: Trantor Россия  
Дата: 19.04.02 04:27
Оценка:
Здравствуйте volph, Вы писали:

skip

V>Соглачен все отлично, но как создать для класса CLeftView класс CLeftDoc ???


Вообще-то документы создаются для фрейма, а не для вида, в свою очеред фрейм может иметь несколько видов...

Из исходников MFC:

CDocument* pDocument = CreateNewDocument();
....
CFrameWnd* pFrame = CreateNewFrame(pDocument, NULL);
В жизни мало быть умным, надо еще быть не дураком.
Re[4]: создание дополнительных объектов SDI
От: volph  
Дата: 19.04.02 04:42
Оценка:
Здравствуйте Trantor, Вы писали:

T>Здравствуйте volph, Вы писали:


T>skip


V>>Соглачен все отлично, но как создать для класса CLeftView класс CLeftDoc ???


T>Вообще-то документы создаются для фрейма, а не для вида, в свою очеред фрейм может иметь несколько видов...


T>Из исходников MFC:


T>
T>CDocument* pDocument = CreateNewDocument();
T>....
T>CFrameWnd* pFrame = CreateNewFrame(pDocument, NULL);
T>


а кстати, есть такой метод GetActiveView() — он возвращает указатель на активную вьюху, а как получить указатель не на активнуюю, а на конкретную?
Re[5]: создание дополнительных объектов SDI
От: Алекс Россия http://wise-orm.com
Дата: 19.04.02 04:54
Оценка:
Здравствуйте volph, Вы писали:

V>Здравствуйте Trantor, Вы писали:


T>>Здравствуйте volph, Вы писали:


T>>skip


V>>>Соглачен все отлично, но как создать для класса CLeftView класс CLeftDoc ???


T>>Вообще-то документы создаются для фрейма, а не для вида, в свою очеред фрейм может иметь несколько видов...


T>>Из исходников MFC:


T>>
T>>CDocument* pDocument = CreateNewDocument();
T>>....
T>>CFrameWnd* pFrame = CreateNewFrame(pDocument, NULL);
T>>


V>а кстати, есть такой метод GetActiveView() — он возвращает указатель на активную вьюху, а как получить указатель не на активнуюю, а на конкретную?


GetFirstViewPosition()
GetNextView()
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.