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

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

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

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

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

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

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

на второе как в последнем посте MasterZiv.
...
Рейтинг: 0 / 0
CFormView и CWinApp в VC++
    #33716857
Фотография wolverin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
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
CFormView и CWinApp в VC++
    #33716868
Фотография wolverin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Chernomorможно к примеру в PreCreateWindow
Таже фигня, что и с конструктором.
...
Рейтинг: 0 / 0
CFormView и CWinApp в VC++
    #33717768
Фотография MasterZiv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
wolverin MasterZivОсвобождать надо в ДЕСТРУКТОРЕ.
Визар не создал в моем классе приложения (наследник от CWinApp) деструктор и я где-то в книжке прочитал, что вроде как в MFC (извините, не знаю как правильно выразиться) "закрыт" этот деструктор.


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

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

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

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

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

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


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