Как закрыть CPropertySheet
Проблема осложняется тем что CPropertySheet не наследник CDialog и т.е у него нет функции OnOK(),
а также тем что Sheet у меня открывается модально и следовательно при использовании CloseWindow() и ShowWindow() родительское окно всеравно остается заблокировано.А DestroyWindow() не нравится почему-то DoModal()( выдает ошибку)
Посоветуйте что-нибудь!!!!!!!!!!
Проблемы начались с того что я спомощью ON_COMMAND(IDOK, OnOKb) перехватил сообщение откнопки чтобы ее обработать (другого способа я не нашел) В результате форма перестала закрываться
Проблема осложняется тем что CPropertySheet не наследник CDialog и т.е у него нет функции OnOK(),
а также тем что Sheet у меня открывается модально и следовательно при использовании CloseWindow() и ShowWindow() родительское окно всеравно остается заблокировано.А DestroyWindow() не нравится почему-то DoModal()( выдает ошибку)
Посоветуйте что-нибудь!!!!!!!!!!
У тебя в запасе есть еще ON_COMMAND(IDCANCEL, OnCancel)
Проблемы начались с того что я спомощью ON_COMMAND(IDOK, OnOKb) перехватил сообщение откнопки чтобы ее обработать (другого способа я не нашел) В результате форма перестала закрываться
В конце твоей OnOK нужно вызвать СDialog::OnOK();
и диалог закроется. Если это кнопка диалога.
В конце твоей OnOK нужно вызвать СDialog::OnOK();
и диалог закроется. Если это кнопка диалога.
При этом закроется только текущая страница, надо вызывать OnOК для всего CPropertySheet
При этом закроется только текущая страница, надо вызывать OnOК для всего CPropertySheet
Это неверно
CDialog::OnOK() это вызов функции класса CDialog и прямого отношения ни к CPropertySheet ни к PropertyPage не имеет
Вызов CDialog::OnOK() закрывает диалог и все что на нем установлено - все дочернее, относящееся к этому диалогу.
Это неверно
CDialog::OnOK() это вызов функции класса CDialog и прямого отношения ни к CPropertySheet ни к PropertyPage не имеет
Вызов CDialog::OnOK() закрывает диалог и все что на нем установлено - все дочернее, относящееся к этому диалогу.
А ты попробуй - посмотри что получится
А ты попробуй - посмотри что получится
У меня со школьной скамьи именно так все и работает
А CDialog::OnOK() это вызов функции класса CDialog и ничего другого он не вызывает (Если специально не постараться)
AndreySar подсказал мне идею, правда я не понял что он имел в виду под использованием ON_COMMAND(IDCANCEL, OnCancel), но его идею я понял в том что можно использовать Cancel для закрытия окна, и я с помощью
bbb.SendMessage(WM_LBUTTONDOWN, 0, 0);
bbb.SendMessage(WM_LBUTTONUP, 0, 0);
всетаки закрыл окно.
Но я всекаки не понял почему у меня не получилось закрыть модальное окно нормальным способом. Если кто сталкивался с подобной проблемой подскажите.
Из-за того что CPropertySheet наследник CWnd а не CDialog естественно вызов CDialog::OnOK() не возможен (навсякий случай даже проверил :) ) а вот
AndreySar подсказал мне идею, правда я не понял что он имел в виду под использованием ON_COMMAND(IDCANCEL, OnCancel), но его идею я понял в том что можно использовать Cancel для закрытия окна, и я с помощью
bbb.SendMessage(WM_LBUTTONDOWN, 0, 0);
bbb.SendMessage(WM_LBUTTONUP, 0, 0);
всетаки закрыл окно.
Но я всекаки не понял почему у меня не получилось закрыть модальное окно нормальным способом. Если кто сталкивался с подобной проблемой подскажите.
Несколько уточнений:
1. Я спутал тебя с lgv, виноват, не то в голове крутилось
2. Закрыть CPropertySheet можно например вызвав
CPropertySheet::EndDialog()
Если ты перехватил OnCommand от ОК и сделал все что нужно, выполни
в конце твоей OnCommand. Все закроется.
3. PropertyPage закрывается корректно по CPropertyPage::OnOk() (можно и СDialog::OnOK(), но это ИМХО некорректно). Но если это вызывается функцией класса произведенного от СPropertyPage