Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Получить CView подфрейма... 
:(
    Опции темы
The Thing
Дата 23.9.2005, 00:23 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



Такая ситуация CWorkView является главным видом, который создался при создании проекта(кстати, подскажите правильное название), CGridView - моя таблица:
Код

BOOL CMainFrame::OnCreateClient(LPCREATESTRUCT lpcs, CCreateContext* pContext) 
{
    m_wndSplit.CreateStatic(this, 2, 1);
    m_wndSplit.CreateView(0, 0, RUNTIME_CLASS(CWorkView), CSize(400, 300), pContext);
    m_wndSplit.CreateView(1, 0, RUNTIME_CLASS(CGridView), CSize(400, 150), pContext);

    return true;
}


Подскажите plz, как организовать доступ:
из CWorkView в CGridView
из CWorkDoc в CGridView
и из CGridView соответственно...

Я это делал очень криво...
Код

CGridView* m_pGridView = (CGridView*)((CMainFrame*)GetParentFrame())->m_pGridView;

создавая m_pGridView в CMainFrame smile

Да, и рассматривая код1 расскажите порядок инициализации классов.
Хотеле в OnInitialUpdate класса CWorkView засунуть стартовую работу функций CGridView, но CGridView еще не создан.



--------------------
Правильность работы программы зависит от двух велечин.
В нужном месте должны стоять нолик и еденичка.
PM MAIL   Вверх
Coocky
Дата 23.9.2005, 13:22 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


GUI гуру
****


Профиль
Группа: Участник Клуба
Сообщений: 2879
Регистрация: 16.2.2004
Где: Украина. Запорожь е

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



Я так понял, окно у тебя разделено сплитером?
Тогда все просто
Код


CWorkView* m_pCWorkView = (CWorkView*)m_wndSplit.GetPane(1,0);//Для CWorkView
CGridView* m_pGridView = (CGridView*)m_wndSplit.GetPane(0,0);//Для Грида


Только так.


--------------------
Верю в смерть после жизни, в любовь после секса ,в крем после бритья smile        
PM ICQ   Вверх
The Thing
Дата 24.9.2005, 00:55 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



Coocky
Прикольноsmile Вот оно как?.. Что бы мы все без тебя делали... Спасибо.
Добавлено @ 00:58
Стоп, а как фун возвратит указатель на класс, если он еще не создан?... вед сплиттеры делят врейм, если я не ошибаюсь?..


--------------------
Правильность работы программы зависит от двух велечин.
В нужном месте должны стоять нолик и еденичка.
PM MAIL   Вверх
Coocky
Дата 26.9.2005, 10:41 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


GUI гуру
****


Профиль
Группа: Участник Клуба
Сообщений: 2879
Регистрация: 16.2.2004
Где: Украина. Запорожь е

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



Цитата(The @ 24.9.2005, 00:55)
Стоп, а как фун возвратит указатель на класс, если он еще не создан?... вед сплиттеры делят врейм, если я не ошибаюсь?..

Я б вообще инициализировал поля класса CWorkView, в CGridView::OnInitialUpdate()
Возможно я что-то на так понял, но попробуй еще в


Код

CGridView::OnInitialUpdate() 
{

if
(CWorkView->m_hWnd!=NULL)
{

}



--------------------
Верю в смерть после жизни, в любовь после секса ,в крем после бритья smile        
PM ICQ   Вверх
The Thing
Дата 26.9.2005, 17:57 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



Coocky
ммм... Логично... спасибо. Но ето один из вариантов выхода.. этот вариант не подойдет когда классов много..

Должно быть как-то через GetFrame(...) проверять существыует ли вид, и если существует то брать ук. вида.

Вопрос остается открытый!


--------------------
Правильность работы программы зависит от двух велечин.
В нужном месте должны стоять нолик и еденичка.
PM MAIL   Вверх
Coocky
Дата 27.9.2005, 10:30 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


GUI гуру
****


Профиль
Группа: Участник Клуба
Сообщений: 2879
Регистрация: 16.2.2004
Где: Украина. Запорожь е

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



Цитата
Должно быть как-то через GetFrame(...) проверять существыует ли вид

Знаю только GetActiveFrame() Все..!


--------------------
Верю в смерть после жизни, в любовь после секса ,в крем после бритья smile        
PM ICQ   Вверх
The Thing
Дата 27.9.2005, 19:21 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



а я GetParentFrame() smile


--------------------
Правильность работы программы зависит от двух велечин.
В нужном месте должны стоять нолик и еденичка.
PM MAIL   Вверх
The Thing
Дата 29.9.2005, 09:39 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



не забывайте обо мне !!!


--------------------
Правильность работы программы зависит от двух велечин.
В нужном месте должны стоять нолик и еденичка.
PM MAIL   Вверх
Coocky
Дата 29.9.2005, 10:16 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


GUI гуру
****


Профиль
Группа: Участник Клуба
Сообщений: 2879
Регистрация: 16.2.2004
Где: Украина. Запорожь е

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



Цитата(The @ 26.9.2005, 17:57)
Должно быть как-то через GetFrame(...) проверять существыует ли вид, и если существует то брать ук. вида


Цитата(The @ 29.9.2005, 09:39)
не забывайте обо мне !!!

Насколько МНЕ известно, m_hWnd-это переменная , которая ВСЕГДА говорит о том ,существует ли окно..Любое окно..
Еслим ты имешшь ввиду функцию BOOL CFrame::Suchestvuet_li_vid (), то я ее не встречал.. smile



--------------------
Верю в смерть после жизни, в любовь после секса ,в крем после бритья smile        
PM ICQ   Вверх
Mad
Дата 29.9.2005, 15:38 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Эксперт
Сообщений: 656
Регистрация: 18.10.2004
Где: Одесса

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



The Thing
Можно через CDocument
Код


   POSITION pos = pDocument->GetFirstViewPosition();
   while (pos != NULL)
   {
      CView* pView = pDocument->GetNextView(pos);
   }




--------------------
user posted image
PM MAIL   Вверх
The Thing
Дата 30.9.2005, 13:31 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



кулл! Спас...
Добавлено @ 13:33
правдо навязывается другой вопрос.. если вдруг не знаешь.. какое у тя по счету вид.. как их отличить?
Добавлено @ 13:34
Из всего етого я понимаю... что многово не понимаю с окнами. надо бы почитать литры.. В принципе у меня есть, но может вы что-то посоветуете уж очень хорошое?..


--------------------
Правильность работы программы зависит от двух велечин.
В нужном месте должны стоять нолик и еденичка.
PM MAIL   Вверх
Coocky
Дата 30.9.2005, 13:49 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


GUI гуру
****


Профиль
Группа: Участник Клуба
Сообщений: 2879
Регистрация: 16.2.2004
Где: Украина. Запорожь е

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



Цитата(The @ 30.9.2005, 13:31)
правдо навязывается другой вопрос.. если вдруг не знаешь.. какое у тя по счету вид.. как их отличить?

Фух...!
Да тебе в любом случае нужно вести отчет номера представления!

Цитата(The @ 26.9.2005, 17:57)
проверять существыует ли вид, и если существует то брать ук. вида.

Вопрос остается открытый!

Тебе дали кучу вариантов
CView* pView = pDocument->GetNextView(pos);Можешь проходится по представлением, как по массиву!
CWorkView* m_pCWorkView = (CWorkView*)m_wndSplit.GetPane(1,0);//Для CWorkView
CGridView* m_pGridView = (CGridView*)m_wndSplit.GetPane(0,0);//Для Грида

Можешь брать исходя из сплитера
GetActiveView()-получить АКТИВНОЕ в данный момент представление
if(IsWindow(pView->m_wWnd)) есть ли оно вообще
IsWindowVisible()-отбражается или нет

Чт еще надо? smile



--------------------
Верю в смерть после жизни, в любовь после секса ,в крем после бритья smile        
PM ICQ   Вверх
The Thing
Дата 30.9.2005, 14:05 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



Цитата
CView* pView = pDocument->GetNextView(pos);Можешь проходится по представлением, как по массиву!
CWorkView* m_pCWorkView = (CWorkView*)m_wndSplit.GetPane(1,0);//Для CWorkView
CGridView* m_pGridView = (CGridView*)m_wndSplit.GetPane(0,0);//Для Грида


отчет номера представления? Это что? я бы прсвоил каждому номер, ли бы знал, кто есть кто..
Код

CView* pView = pDocument->GetNextView(pos);


Работает только из CFrameWnd... этот вариант подходит... держать все в паблике там и через GetParentFrame();
Код

CWorkView* m_pCWorkView = (CWorkView*)m_wndSplit.GetPane(1,0);//Для CWorkView
CGridView* m_pGridView = (CGridView*)m_wndSplit.GetPane(0,0);//Для Грида


варианта только 2-а.. А понятный как получить вид только один. etParentFrame();
Добавлено @ 14:13
Да, забыл..smile Всем спасиба! То, что нужно я узнал. Топик закрыт)

Coocky
не злись...


--------------------
Правильность работы программы зависит от двух велечин.
В нужном месте должны стоять нолик и еденичка.
PM MAIL   Вверх
Coocky
Дата 30.9.2005, 14:13 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


GUI гуру
****


Профиль
Группа: Участник Клуба
Сообщений: 2879
Регистрация: 16.2.2004
Где: Украина. Запорожь е

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



Короче так..
Скажи еще раз в двухх словах -что тебе НУЖНО сделать. Опиши ситуацию!


--------------------
Верю в смерть после жизни, в любовь после секса ,в крем после бритья smile        
PM ICQ   Вверх
Mad
Дата 30.9.2005, 17:42 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Эксперт
Сообщений: 656
Регистрация: 18.10.2004
Где: Одесса

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



Цитата(The @ 30.9.2005, 12:31)
правдо навязывается другой вопрос.. если вдруг не знаешь.. какое у тя по счету вид.. как их отличить?

Можно по имени класса

Код

CRuntimeClass *pClass = pView->GetRuntimeClass();
if (!strcmp(pClass->m_lpszClassName, "CMyViewClass"))
{
}
else if (!strcmp(pClass->m_lpszClassName, "CMyNextViewClass"))
{
}




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


 




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


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

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