Понадобилось написать написать прикладную программу на VC, а я только
приступил к MFC. Помогите, кто может.
Выполняется некоторое действие (например, чтение файла и вывод его через COM).
При этом появляется диалоговое окно с Progress'ом. Вопрос в следующем:
Нужно, чтобы при нормальном окончании процесса окно закрылось само,
но также нужно иметь возможность остановить процесс нажатием какого-либо
Button, либо Escape. Вот функция. Цикл внутри сделан условно для простоты
и наглядности. Что нужно всунуть в него, чтобы знать, был ли нажат
Button "Cancel" или другой, или Escape. Или это вообще делается иначе?
void CProgressDlg::MyReadFileOutCom()
{
int i;
for ( i=0; i<NuberBytesInFile; i++)
{
m_Progress.SetPos(i);
//прочитали
//вывели
}
CProgressDlg::EndDialog(IDOK); // правильно ли так?
}
ID>Понадобилось написать написать прикладную программу на VC, а я только ID>приступил к MFC. Помогите, кто может. ID>Выполняется некоторое действие (например, чтение файла и вывод его через COM). ID>При этом появляется диалоговое окно с Progress'ом. Вопрос в следующем: ID>Нужно, чтобы при нормальном окончании процесса окно закрылось само, ID>но также нужно иметь возможность остановить процесс нажатием какого-либо ID>Button, либо Escape. Вот функция. Цикл внутри сделан условно для простоты ID>и наглядности. Что нужно всунуть в него, чтобы знать, был ли нажат ID>Button "Cancel" или другой, или Escape. Или это вообще делается иначе?
ID>void CProgressDlg::MyReadFileOutCom() ID>{ ID> int i; ID> for ( i=0; i<NuberBytesInFile; i++) ID> { ID> m_Progress.SetPos(i); ID> //прочитали ID> //вывели ID> } ID> CProgressDlg::EndDialog(IDOK); // правильно ли так? ID>}
ID>
Это делается так: создаешь обработчики события нажатия на кнопку "Cancel" в твоем диалоге. При входе в метод void CProgressDlg::MyReadFileOutCom() перед циклом устанавливаешь флаг (например, некоторую булевскую переменную, член класса CProgressDlg) в истину. Это для того, чтобы при нажатии на отмену знать, что идет цикл. А в самом цикле тогда надо будет организовать обработку очереди сообщений. Выгдядеть это будет примерно так: