Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / C++ [игнор отключен] [закрыт для гостей] / CFormView и CWinApp в VC++ / 12 сообщений из 12, страница 1 из 1
04.05.2006, 12:05
    #33706456
wolverin
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
CFormView и CWinApp в VC++
1) CFormView - какой обработчик (событие) вызывается при "инициализации окна" - необходимо работать с контролами на форме - в конструкторе нельзя, в OnInitialUpdate тоже.
2) CWinApp - какой обработчик (событие) вызывается при закрытии приложения (по дефолту конструктора нет, в ExitInstance() не входит).
...
Рейтинг: 0 / 0
04.05.2006, 17:51
    #33707937
Lenie
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
CFormView и CWinApp в VC++
wolverin1) CFormView - какой обработчик (событие) вызывается при "инициализации окна" - необходимо работать с контролами на форме - в конструкторе нельзя, в OnInitialUpdate тоже.
можно объявить в конструкторе CMainFrame

wolverin2) CWinApp - какой обработчик (событие) вызывается при закрытии приложения (по дефолту конструктора нет, в ExitInstance() не входит).
проверила - получилось добавить метод int CClassApp::ExitInstance() с вызовом из него чего-то другого
...
Рейтинг: 0 / 0
06.05.2006, 08:50
    #33712009
wolverin
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
CFormView и CWinApp в VC++
Lenieможно объявить в конструкторе CMainFrame
Мне не нужно объявлять, я хочу обратиться к контролу и проставить ему свойства.
Lenie с вызовом из него чего-то другого
Из "чего-то другого" я могу вызвать все что угодно.
Просто инициализацию всех глобальных переменных приложения делаю в CWinApp::InitInstance(), вот и хочется освободить память по уничтожению объекта данного класса.
...
Рейтинг: 0 / 0
06.05.2006, 14:14
    #33713129
MasterZiv
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
CFormView и CWinApp в VC++
1) CFormView - какой обработчик (событие) вызывается при "инициализации окна" - необходимо работать с контролами на форме - в конструкторе нельзя, в OnInitialUpdate тоже.

При создании экземпляра класса - конструктор.
При СОЗДАНИИ OКНА - WM_CREATE.

2) CWinApp - какой обработчик (событие) вызывается при закрытии приложения (по дефолту конструктора нет, в ExitInstance() не входит)

ExitInstance() и вызывается. Это когда уже все, приложение завершается. Он ДОЛЖЕН вызываться, если нет, у тебя что-то сильно не так, ищи ошибки.

Еще можно WM_CLOSE WM_QUIT на главном окне, CanCloseFrame на любом фрейме (это не совсем закрытие приложения, но может понадобится).
...
Рейтинг: 0 / 0
06.05.2006, 14:15
    #33713132
MasterZiv
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
CFormView и CWinApp в VC++
wolverin
Просто инициализацию всех глобальных переменных приложения делаю в CWinApp::InitInstance(), вот и хочется освободить память по уничтожению объекта данного класса.

Освобождать надо в ДЕСТРУКТОРЕ.
...
Рейтинг: 0 / 0
07.05.2006, 22:26
    #33714770
Chernomor
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
CFormView и CWinApp в VC++
Не знаю чем OnInitialUpdate не устраивает, но можно к примеру в PreCreateWindow

на второе как в последнем посте MasterZiv.
...
Рейтинг: 0 / 0
10.05.2006, 10:06
    #33716857
wolverin
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
CFormView и CWinApp в VC++
MasterZivОсвобождать надо в ДЕСТРУКТОРЕ.
Визар не создал в моем классе приложения (наследник от CWinApp) деструктор и я где-то в книжке прочитал, что вроде как в MFC (извините, не знаю как правильно выразиться) "закрыт" этот деструктор.
А где искать ошибки почему CWinApp::ExitInstance() не вызывается - ума не приложу, может быть эта проблема вызвана неправильным освобождением указателей на интерфейсы COM-сервера (или "отписка" от событий)???
Потому что он мне сообщает в лог файле
Код: plaintext
(CDeviceManager::GetDeviceItem2) OUT: Invalid Pointer
Хотя COM-сервер останавливается все равно после CoUninitialize().

MasterZiv
Chernomor
Вот такой код пишу
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
void CMyView::OnInitialUpdate()
{
	__super::OnInitialUpdate();
	if (m_Low)
             {
	GetDlgItem(IDC_E_MIN)->EnableWindow( 0 );
	GetDlgItem(IDC_E_MAX)->EnableWindow( 0 );
             }
}
В условие отладчиком вхожу, но элементы управления (поля редактирования) не гасятся, хотя когда окно открыто код работает правильно.
Помещаю этот же код в CFormView::OnCreate(LPCREATESTRUCT lpCreateStruct), вываливается ошибка
Код: plaintext
Unhandled exception at 0x0057905a in Baloon.exe: 0xC0000005: Access violation reading location 0x0000001c.
Если в конструкторе CFormView::CFormView
Код: plaintext
1.
Unhandled exception at 0x7c901230 in Baloon.exe: User breakpoint.
...
Рейтинг: 0 / 0
10.05.2006, 10:10
    #33716868
wolverin
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
CFormView и CWinApp в VC++
Chernomorможно к примеру в PreCreateWindow
Таже фигня, что и с конструктором.
...
Рейтинг: 0 / 0
10.05.2006, 14:08
    #33717768
MasterZiv
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
CFormView и CWinApp в VC++
wolverin MasterZivОсвобождать надо в ДЕСТРУКТОРЕ.
Визар не создал в моем классе приложения (наследник от CWinApp) деструктор и я где-то в книжке прочитал, что вроде как в MFC (извините, не знаю как правильно выразиться) "закрыт" этот деструктор.


Не закрыт. Вообще такое почти невозможно.
...
Рейтинг: 0 / 0
10.05.2006, 14:12
    #33717781
MasterZiv
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
CFormView и CWinApp в VC++
Еще раз.

1) CFormView - какой обработчик (событие) вызывается при "инициализации окна" - необходимо работать с контролами на форме - в конструкторе нельзя, в OnInitialUpdate тоже.

Штатно это делается именно в OnInitialUpdate.
После вызова родительского OnInitialUpdate.

2) CWinApp - какой обработчик (событие) вызывается при закрытии приложения (по дефолту конструктора нет, в ExitInstance() не входит).

Штатно это делается в ExitInstance.
...
Рейтинг: 0 / 0
11.05.2006, 12:21
    #33720042
Lenie
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
CFormView и CWinApp в VC++
wolverinМне не нужно объявлять, я хочу обратиться к контролу и проставить ему свойства.
попробуйте это сделать здесь:
void CMainFrame::OnActivate(UINT nState, CWnd* pWndOther, BOOL bMinimized)

wolverinИз "чего-то другого" я могу вызвать все что угодно.
вы меня неправильно поняли, или я плохо выразилась. Я имела в виду, что в int CClassApp::ExitInstance() МОЖНО делать другие вещи, по крайней мере я у себя попробовала и у меня получилось...
...
Рейтинг: 0 / 0
11.05.2006, 15:43
    #33720754
wolverin
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
CFormView и CWinApp в VC++
Lenieпопробуйте это сделать здесь:
void CMainFrame::OnActivate
Хе-хе, так-то оно работает, только OnActivate работает от каждого Activate :)
...
Рейтинг: 0 / 0
Форумы / C++ [игнор отключен] [закрыт для гостей] / CFormView и CWinApp в VC++ / 12 сообщений из 12, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]