Как сделать так чтобы программа не закрывалась после выполнения

Как сделать, чтобы диалог не закрывался при нажатии пользователем Enter или Esc?

Для начала разберёмся, почему диалог закрывается, даже если убрать кнопки OK и Cancel. CDialog имеет две специальных виртуальных функции, OnOK() и OnCancel(), которые вызываются когда пользователь нажимает клавиши Enter или Esc соответственно. CDialog содержит функцию EndDialog(), которая собственно и закрывает диалог.

Так как она относится к функциям специального назначения, то она не присуствует в диалоговой секции BEGIN_MESSAGE_MAP/END_MESSAGE_MAP, и должна быть переопределена по-другому, в отличие от обычных обработчиков нажатия на кнопки. Если у Вас есть кнопки с идентификаторами IDOK и IDCANCEL, то можно воспользоваться Визардом (ClassWizard) для добавления обработчиков BN_CLICKED для этих кнопок, и они будут делать необходимые действия для OnOK() и OnCancel(). Если у Вас нет кнопок с этими ID, то можно вручную добавить эти виртуальные функции. В заголовочном файле диалогового класса:

А если в разные стороны повернуть? 🤫 #юмор #авто #shorts


class CMyDialog : public CDialog
// .
// Generated message map functions
//
virtual void OnOK();
virtual void OnCancel();
//>>AFX_MSG
DECLARE_MESSAGE_MAP()
>;
А затем в соответствующем .CPP файле:
void CMyDialog::OnOK()
>
void CMyDialog::OnCancel()
>

Теперь обработчики не будут вызывать EndDialog() и, соответственно диалог не будет закрываться.

Источник: www.cyberguru.ru

Автоматический выход из программы

Здраствуйте подскажи как закончить написание батника чтоб после завершения обработки программа автоматически закрывалась (смысл такой написал батник чтоб он запускал 1с как пользователь и автоматически выполнял обработку все работает по после выполнения обработки программа остается открытой как сделать так чтоб она после выполнения обработки завершала работу автоматически)

Читайте также:
Программа которая подсчитывает дни

активный пользователь
Дата регистрации: 18.02.2002
Сообщений: 20889
29.08.2011 10:15

В обработке сделать выход из системы.

читатель
Дата регистрации: 23.12.2010
Сообщений: 1333
29.08.2011 10:21
shogun1988
читатель
Дата регистрации: 31.05.2011
Сообщений: 21
29.08.2011 10:25

выходит окно завершение работы с выбором да / нет

активный пользователь
Дата регистрации: 18.02.2002
Сообщений: 20889
29.08.2011 10:26

В настройках пользователя сними галочку запрашивать потверждение.

читатель
Дата регистрации: 23.12.2010
Сообщений: 1333
29.08.2011 10:27

ЗавершитьРаботуСистемы (Exit)
Синтаксис:
ЗавершитьРаботуСистемы(, , )
Параметры:
(необязательный)
Тип: Булево.
Если Ложь, то завершение работы программы будет выполнено безусловно (не зависимо от наличия редактируемых данных).
Если значение параметра Истина, то будут вызываться обработчики закрытия для каждой открытой формы и для всего приложения. Для редакторов текстов, табличных документов и HTML-документов будет произведен анализ модифицированности. Если нет факторов, препятствующих закрытию (например, данные модифицированы и не сохранены), то выполняется завершение работы. В противном случае (такие данные есть) будет выдан вопрос о необходимости сохранения документов.

Командная строка закрывается после выполнения команды (Решение)


Значение по умолчанию: Истина

Читайте синтаксис помощник!

Источник: buh.ru

консольное приложение — C ++ Способы завершения работы программы

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

Я прочитал все виды способов закрыть программу. Я ЗНАЮ, что всегда лучше закрыть программу, в конце! Итак, как я уже сказал, я читал все виды тем, но я не мог найти ту, которую я правильно понял. Так что я вроде придумал свой путь. Я просто хочу убедиться, что это хороший метод.

int main() < cout > return 0; >

Читайте также:
Iiko программа для ресторанов отзывы

Поэтому я хочу, чтобы вы сосредоточились на цикле while. Это мой метод.

void commands() < cin >> command; if (command == «help») < cout section—-» else if (command == «exit») < running = 0; >else < cout >

И это моя командная функция. Как вы видите, это меняет «ход» на 0 (или ложь). Я надеюсь, что сделал это достаточно понятным.

РЕДАКТИРОВАТЬ: Все, что я хочу знать, если это хороший метод

ЗАКЛЮЧИТЕЛЬНОЕ РЕДАКТИРОВАНИЕ: Хорошо! Я изменил «выход (0);» «вернуть (0);». Так что я думаю, что это хороший метод! Спасибо за вашу помощь!

Решение

С помощью exit() в программе легально. Хотя это вообще плохая идея. Но если программа застряла без возврата по какой-то странной причине, вы можете это сделать.

С помощью exit в main() это грубо: я просто не могу думать о здравом рассудке, чтобы не использовать взамен взамен.

Разница между выходом () и возвратом из основного состоит в том, что первый оставит все локальные объекты в кадрах стека от основного до зависания точки вызова, деструктор не вызывается. Только статические / глобальные объекты получают правильное отключение. Это может удивить некоторые части кода и оставить важные вещи не выполненными.

Поскольку в C ++ есть прекрасные исключения, я бы посчитал предпочтительным заменить exit () на бросание чего-то, что справляется с main, где происходит регулярный возврат.

Другие решения

if (running == 0) но бессмысленно!

while (running == 1) < commands(); >return 0;

Делает то же самое — после выполнения 0 он выпадает из нижней части цикла, и main возвращается. Вся идея глобального running в программирование побочных эффектов, что плохо!

Учитывая граничные условия в вопросе, exit () делает то, что вы хотите. Он обычно завершает процесс, выполняя обычную очистку для завершающих программ (atexit (), уничтожая объекты без автоматического хранения и т. Д.).

Читайте также:
В чем суть программа принципа работы компьютера

Вы на самом деле не хотите использовать глобальный запуск, поэтому я бы предпочел проверить параметр return command ().

int commands()

И если по какой-то причине вы не можете просто позволить командам () прервать цикл while (например, проверив возвращаемый параметр и установив значение 0, если оно равно 1), и вы захотите немедленно выйти из программы, а не завершать оценку остальных цикл while, тогда exit () — это нормально (хотя в данном конкретном случае возврат лучше (так как в этом примере вы находитесь в main)). Просто постарайтесь не работать как глобальный — может показаться невинным прямо сейчас, но может измениться позже :).

Источник: web-answers.ru

Рейтинг
( Пока оценок нет )
Загрузка ...
EFT-Soft.ru