подскажите с MDI от mfc VC 6.0
От: t_n_t  
Дата: 05.06.06 06:41
Оценка:
есть (пишется) MDI приложение
класс доумента один, видов несколько
а). это диалог от CFormView с всякими контролави для ввода информации
б). тоже так же ............ с гридом для отображения информации
есть желание, непонятно что читать или где, что бы его реализовать
задача:
1. .. 2-й вид отбражает данные (например данные из таблица/БД)
всего 3! таблицы и заранее исзвестно что кроме 3-х таблиц ничего
другого он отображать не будет. т.е., к примеру, в меню есть команда отобразить табл1,
табл2, табл3.
Так вот когда, предположим, табл1 уже открыта(отображена) и пользователь нажимает в меню еще раз табл1,
то хочется что бы табл1 не отображался вновь, т.е. нужно что бы активизировался СУЩЕСТВУЮЩИЙ(открытый) вид.
И так со всеми тремя табл...
непонятно что?
1.1 непонятно нужно ли создавать три класса для каждого из этих отображений,
ведь в принципе кроме грида на нем ничего не будет, а значит они соовершенно идентичны.
1.2 как пройтись по списку открытых окон и определить что выбираемый(открываемый)
вид уже открыт?
Re: подскажите с MDI от mfc VC 6.0
От: MadMaxII  
Дата: 05.06.06 08:22
Оценка:
Здравствуйте, t_n_t, Вы писали:

__>есть (пишется) MDI приложение

__>класс доумента один, видов несколько
__>1.2 как пройтись по списку открытых окон и определить что выбираемый(открываемый)
__>вид уже открыт?

Из MSDN:
Example

// This example uses CDocument::GetFirstViewPosition
// and GetNextView to repaint each view.
void CMyDoc::OnRepaintAllViews()
{
   POSITION pos = GetFirstViewPosition();
   while (pos != NULL)
   {
      CView* pView = GetNextView(pos);
      pView->UpdateWindow();
   }   
}

// An easier way to accomplish the same result is to call
// UpdateAllViews(NULL);
Re[2]: подскажите с MDI от mfc VC 6.0
От: t_n_t  
Дата: 05.06.06 10:08
Оценка:
Здравствуйте, MadMaxII, Вы писали:

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


__>>есть (пишется) MDI приложение

__>>класс доумента один, видов несколько
__>>1.2 как пройтись по списку открытых окон и определить что выбираемый(открываемый)
__>>вид уже открыт?

MMI>Из MSDN:

MMI>
MMI>Example

MMI>// This example uses CDocument::GetFirstViewPosition
MMI>// and GetNextView to repaint each view.
MMI>void CMyDoc::OnRepaintAllViews()
MMI>{
MMI>   POSITION pos = GetFirstViewPosition();
MMI>   while (pos != NULL)
MMI>   {
MMI>      CView* pView = GetNextView(pos);
MMI>      pView->UpdateWindow();
MMI>   }   
MMI>}

MMI>// An easier way to accomplish the same result is to call
MMI>// UpdateAllViews(NULL);


MMI>


Спасибо, но это я видел, не понятно как из MainFram'а это выполнить?
GetFirstViewPosition' : undeclared identifier
и т.д.
думаю что нужно как нить получить указатель на??? может виды или шаблоны
я уже много в мспне перерыл и чего то непонимаю наверно
Re[3]: подскажите с MDI от mfc VC 6.0
От: t_n_t  
Дата: 05.06.06 10:59
Оценка:
Здравствуйте, t_n_t, Вы писали:

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


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


__>>>есть (пишется) MDI приложение

__>>>класс доумента один, видов несколько
__>>>1.2 как пройтись по списку открытых окон и определить что выбираемый(открываемый)
__>>>вид уже открыт?

MMI>>Из MSDN:

MMI>>
MMI>>Example

MMI>>// This example uses CDocument::GetFirstViewPosition
MMI>>// and GetNextView to repaint each view.
MMI>>void CMyDoc::OnRepaintAllViews()
MMI>>{
MMI>>   POSITION pos = GetFirstViewPosition();
MMI>>   while (pos != NULL)
MMI>>   {
MMI>>      CView* pView = GetNextView(pos);
MMI>>      pView->UpdateWindow();
MMI>>   }   
MMI>>}

MMI>>// An easier way to accomplish the same result is to call
MMI>>// UpdateAllViews(NULL);


MMI>>


__>Спасибо, но это я видел, не понятно как из MainFram'а это выполнить?

__>GetFirstViewPosition' : undeclared identifier
__>и т.д.
__>думаю что нужно как нить получить указатель на??? может виды или шаблоны
__>я уже много в мспне перерыл и чего то непонимаю наверно


аа
даже это понятно осталось только понять
как опреелить открыт ли вид или нет????
Re[4]: подскажите с MDI от mfc VC 6.0
От: MadMaxII  
Дата: 05.06.06 11:17
Оценка:
Здравствуйте, t_n_t, Вы писали:

__>аа

__>даже это понятно осталось только понять
__>как опреелить открыт ли вид или нет????

Здесь уже все зависит от вашей фантазии и конкретной программы. Например такой способ: в класс, производный от CView, добавляем переменную член, которая и будет определять что-же она показывает, табл.1, 2 или 3, или что-то другое.
Re[5]: подскажите с MDI от mfc VC 6.0
От: t_n_t  
Дата: 05.06.06 15:31
Оценка:
Здравствуйте, MadMaxII, Вы писали:

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


__>>аа

__>>даже это понятно осталось только понять
__>>как опреелить открыт ли вид или нет????

MMI>Здесь уже все зависит от вашей фантазии и конкретной программы. Например такой способ: в класс, производный от CView, добавляем переменную член, которая и будет определять что-же она показывает, табл.1, 2 или 3, или что-то другое.


это хорошо...
но вот вопрос? в "1С:Предприятие" когда выбираеш показать какой нить справочник,
то если он уже открыт, то он активизируется, а если нет, то открывается
так вот справочников там...
и что на каждый свою переменную?
неужели нет ни какого стандартного(библиотечного) способа?
Re[6]: подскажите с MDI от mfc VC 6.0
От: MadMaxII  
Дата: 06.06.06 08:49
Оценка:
Здравствуйте, t_n_t, Вы писали:

MMI>>Здесь уже все зависит от вашей фантазии и конкретной программы. Например такой способ: в класс, производный от CView, добавляем переменную член, которая и будет определять что-же она показывает, табл.1, 2 или 3, или что-то другое.


__>это хорошо...

__>но вот вопрос? в "1С:Предприятие" когда выбираеш показать какой нить справочник,
__>то если он уже открыт, то он активизируется, а если нет, то открывается
__>так вот справочников там...
__>и что на каждый свою переменную?
__>неужели нет ни какого стандартного(библиотечного) способа?

У каждого справочника в 1С есть идентификатор (например имя справочника). Вот и скажите мне, чем отличается ваш Вью, который показывает Табл. 1 от Вью, показывающий Табл. 3?
Re: подскажите с MDI от mfc VC 6.0
От: Ulys  
Дата: 12.06.06 07:57
Оценка:
Здравствуйте, t_n_t, Вы писали:

__>1.1 непонятно нужно ли создавать три класса для каждого из этих отображений,

__>ведь в принципе кроме грида на нем ничего не будет, а значит они соовершенно идентичны.
__>1.2 как пройтись по списку открытых окон и определить что выбираемый(открываемый)
__>вид уже открыт?

Хм... Если документов всего 3 и больше не будет, может, проще будет сделать SDI приложение со сплиттерами? Грид в одном фрейме, таблица в другом? Многие проблемы (типа создание трёх классов или определение открытого окна) исчезнут сами собой.
Подробнее можно посмотреть здесь
Автор: Ulys
Дата: 24.11.05
.
Впрочем, не хочу вас слишком обнадеживать: я вовсе не уверен, что все понял правильно. Два смысловых слоя я уловил, но, по-моему, там был еще и третий... (А&Б Стругацкие, "Жук в муравейнике").
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.