Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / C++ Новый топик    Ответить
 трудности с выводом немодальных окон CPropertySheet  [new]
Andrey1306
Member

Откуда: Киев
Сообщений: 2611
Добрый день!
Есть небольшая проблема, стоит задача на диалоговою форму поместить немодальное окно CPropertySheet с соответсвующими вкладками. сделал вот так
CScanerSheet sheet(L"Тут будут всякие закладки");
//CScanerPage page1();
CPropertyPage page1(IDD_PROPPAGE1);
sheet.AddPage(&page1);
sheet.EnableStackedTabs(FALSE);

//sheet.DoModal();
sheet.Create(this,WS_VISIBLE);
sheet.ModifyStyleEx(0,WS_EX_CONTROLPARENT);
sheet.SetWindowPos(NULL,ColTwo+25,4*Border,widthWindow-ColTwo-5,heightWindow*0.9,SWP_NOZORDER|SWP_NOSIZE|SWP_NOACTIVATE);

закоментированый вариант вызова модальной формы работает, а не модальной тоже вроде бы срабатывает окно появляется на долю секунды и исчезает. Подскажите как быть?? в чем ошибка.
Немодальное окно должно быть типа child
6 июл 07, 17:06    [4361950]     Ответить | Цитировать Сообщить модератору
 Re: трудности с выводом немодальных окон CPropertySheet  [new]
1211212
Guest
CScanerSheet наследуется от CPropertySheet и м.б. здесь проблема?
6 июл 07, 17:56    [4362226]     Ответить | Цитировать Сообщить модератору
 Re: трудности с выводом немодальных окон CPropertySheet  [new]
Y
Guest
Andrey1306
Добрый день!
Есть небольшая проблема, стоит задача на диалоговою форму поместить немодальное окно CPropertySheet с соответсвующими вкладками. сделал вот так
CScanerSheet sheet(L"Тут будут всякие закладки");
//CScanerPage page1();
CPropertyPage page1(IDD_PROPPAGE1);
sheet.AddPage(&page1);
sheet.EnableStackedTabs(FALSE);

//sheet.DoModal();
sheet.Create(this,WS_VISIBLE);
sheet.ModifyStyleEx(0,WS_EX_CONTROLPARENT);
sheet.SetWindowPos(NULL,ColTwo+25,4*Border,widthWindow-ColTwo-5,heightWindow*0.9,SWP_NOZORDER|SWP_NOSIZE|SWP_NOACTIVATE);

закоментированый вариант вызова модальной формы работает, а не модальной тоже вроде бы срабатывает окно появляется на долю секунды и исчезает. Подскажите как быть?? в чем ошибка.
Немодальное окно должно быть типа child


Destruktor srabatyvet....
6 июл 07, 17:57    [4362229]     Ответить | Цитировать Сообщить модератору
 Re: трудности с выводом немодальных окон CPropertySheet  [new]
1211212
Guest
Да скорее всего - выполнение продолжается и локальная переменная теряется...
6 июл 07, 18:01    [4362259]     Ответить | Цитировать Сообщить модератору
 Re: трудности с выводом немодальных окон CPropertySheet  [new]
Andrey1306
Member

Откуда: Киев
Сообщений: 2611
где срабатывает деструктор ???
6 июл 07, 18:23    [4362372]     Ответить | Цитировать Сообщить модератору
 Re: трудности с выводом немодальных окон CPropertySheet  [new]
Andrey1306
Member

Откуда: Киев
Сообщений: 2611
Вы имеете ввиду что объявление CScanerSheet sheet(L"Тут будут всякие закладки");
должно быть глобальным
а когда я его объявляю в h файле получаю ошибку

C2512: 'CScanerSheet' : no appropriate default constructor available
6 июл 07, 18:58    [4362473]     Ответить | Цитировать Сообщить модератору
 Re: трудности с выводом немодальных окон CPropertySheet  [new]
Andrey1306
Member

Откуда: Киев
Сообщений: 2611
Andrey1306
Вы имеете ввиду что объявление CScanerSheet sheet(L"Тут будут всякие закладки");
должно быть глобальным
а когда я его объявляю в h файле получаю ошибку

C2512: 'CScanerSheet' : no appropriate default constructor available


этой ошибки больше нету
6 июл 07, 19:00    [4362481]     Ответить | Цитировать Сообщить модератору
 Re: трудности с выводом немодальных окон CPropertySheet  [new]
1211212
Guest
Может добавить пустой конструктор и добавить Create. Так обычно делают.

Вавриант обойтись атрибутом-указателем. Придется ловить закрытие для delete.

Похоже это какие-то свойства - модальную форму достаточно естественно использовать, нет?
6 июл 07, 19:05    [4362499]     Ответить | Цитировать Сообщить модератору
 Re: трудности с выводом немодальных окон CPropertySheet  [new]
Andrey1306
Member

Откуда: Киев
Сообщений: 2611
нужно динаически добавлять закладки в форму отображение разных отчетов
6 июл 07, 19:12    [4362534]     Ответить | Цитировать Сообщить модератору
 Re: трудности с выводом немодальных окон CPropertySheet  [new]
1211212
Guest
С последним постом я чуточку опоздал - проблема исчезла. Я имел в виду то, что на мой взгляд, такая ошибка могла возникнуть только в случае, если указана переменная:
MyType a;
где MyType - класс, в котором нет публичного конструктора без параметров - VS считает его конструктором по умолчанию.

В случае
MyType *a;
деструктор скорее всего сам отработает при закрытии окна.

Имеется в виду при открытом окне с закладками?
6 июл 07, 19:32    [4362623]     Ответить | Цитировать Сообщить модератору
 Re: трудности с выводом немодальных окон CPropertySheet  [new]
Andrey1306
Member

Откуда: Киев
Сообщений: 2611
А кто может подсказать из-за чего возникает следующая проблема
код
	
             CScanerPage page1(IDD_PROPPAGE1);
	CScanerPage page2(IDD_PROPPAGE1);
	CScanerPage page3(IDD_PROPPAGE1);
	CScanerPage page4(IDD_PROPPAGE1);
	CScanerPage page5(IDD_PROPPAGE1);
	CScanerPage page6(IDD_PROPPAGE1);

	sheet->AddPage(&page1);
	sheet->AddPage(&page2);
	sheet->AddPage(&page3);
	sheet->AddPage(&page4);
	sheet->AddPage(&page5);
	sheet->AddPage(&page6);

	sheet->EnableStackedTabs(FALSE);
	
	CWnd* pWnd = GetDlgItem (IDD_GUI_DIALOG);
	
	sheet->DoModal();
	sheet->Create(pWnd,WS_VISIBLE);
как видно в конце вызывается созданое окно свойств первый раз как модальное и второй как немодальное
в первом варианте вроде бы работает а во втором при переключение между табами получаю ошибку см рис

К сообщению приложен файл. Размер - 0Kb
9 июл 07, 12:11    [4366636]     Ответить | Цитировать Сообщить модератору
 Re: трудности с выводом немодальных окон CPropertySheet  [new]
Andrey1306
Member

Откуда: Киев
Сообщений: 2611
Да, отладка выбрасывает в objcore.cpp в этой ф-ции строка с меткой

BOOL CObject::IsKindOf(const CRuntimeClass* pClass) const
{
	ASSERT(this != NULL);
	// it better be in valid memory, at least for CObject size
	ASSERT(AfxIsValidAddress(this, sizeof(CObject)));

	// simple SI case
	CRuntimeClass* pClassThis = GetRuntimeClass(); // *****
             return pClassThis->IsDerivedFrom(pClass);
}
9 июл 07, 12:15    [4366671]     Ответить | Цитировать Сообщить модератору
 Re: трудности с выводом немодальных окон CPropertySheet  [new]
1211212
Guest
Если два раза модальное открытие не отработает, значит проблема в первом закрытии -
9 июл 07, 12:23    [4366744]     Ответить | Цитировать Сообщить модератору
 Re: трудности с выводом немодальных окон CPropertySheet  [new]
Andrey1306
Member

Откуда: Киев
Сообщений: 2611
Меня интересует как вызов немодального окна, модальное это так к слову пришлось
9 июл 07, 12:45    [4366932]     Ответить | Цитировать Сообщить модератору
 Re: трудности с выводом немодальных окон CPropertySheet  [new]
Andrey1306
Member

Откуда: Киев
Сообщений: 2611
А, ......... ля, протупил все вопрос снимаю
9 июл 07, 13:32    [4367296]     Ответить | Цитировать Сообщить модератору
 Re: трудности с выводом немодальных окон CPropertySheet  [new]
MasterZiv
Member

Откуда: Питер
Сообщений: 34688

Andrey1306 пишет:
> Есть небольшая проблема, стоит задача на диалоговою форму поместить
> немодальное окно CPropertySheet с соответсвующими вкладками. сделал вот так

Я боюсь, что ты занимаешься не тем. Дело в том, что CPropertySheet/Page - это
для реализации визардов, а они модальны по определению. И эта модальность
прошита в эти классы, чуть ли не приварена.

Надо использовать просто окна win32 типа SysTabCtrl32 (это только
самы закладки, на которые можно нажимать) и показывать-прятать
дочерние диалоги. Я такое делал как-то.

Posted via ActualForum NNTP Server 1.4

9 июл 07, 14:04    [4367521]     Ответить | Цитировать Сообщить модератору
 Re: трудности с выводом немодальных окон CPropertySheet  [new]
Andrey1306
Member

Откуда: Киев
Сообщений: 2611
MasterZiv

Andrey1306 пишет:
> Есть небольшая проблема, стоит задача на диалоговою форму поместить
> немодальное окно CPropertySheet с соответсвующими вкладками. сделал вот так

Я боюсь, что ты занимаешься не тем. Дело в том, что CPropertySheet/Page - это
для реализации визардов, а они модальны по определению. И эта модальность
прошита в эти классы, чуть ли не приварена.

Надо использовать просто окна win32 типа SysTabCtrl32 (это только
самы закладки, на которые можно нажимать) и показывать-прятать
дочерние диалоги. Я такое делал как-то.
Posted via ActualForum NNTP Server 1.4


не соглашусь так как уже сделал, у меня на форме должно вмонтированым примерно посредине появится немодальное окно с динамическим добавлением вкладок
11 июл 07, 17:56    [4380268]     Ответить | Цитировать Сообщить модератору
Между сообщениями интервал более 1 года.
 Re: трудности с выводом немодальных окон CPropertySheet  [new]
kondrik
Member

Откуда:
Сообщений: 2
У меня аналогичная проблема. Был модальный CPropertySheetEx. Я хочу переделать на немодальный.
Инициализация:
m_ppsWizard = new CWizard(AFX_IDS_APP_TITLE, NULL, 0, bmpWatermark, NULL, bmpHeader);
Добавляю 2 вкладки через AddPage

Создание CPropertySheetEx:
m_ppsWizard->Create(this, WS_SYSMENU | WS_POPUP | WS_CAPTION | DS_MODALFRAME | DS_CONTEXTHELP | WS_VISIBLE, WS_EX_DLGMODALFRAME);

созданный property sheet появляется с двумя вкладками и кратковременно появляются на вкладке контролы, которые пропадают и в результате вкладки отображаются пустыми. Деструктор для property sheet и для property page не вызывался и не вызывался для контролов.
Как победить? Похоже не отрисовываются контролы.
24 дек 20, 20:32    [22253663]     Ответить | Цитировать Сообщить модератору
Все форумы / C++ Ответить