2013-10-08 2 views
1

wxWidget gui 응용 프로그램을 작성했습니다. 매개 변수에 따라 GUI가 표시되는 경우도 있지만 프로그램을 자동 모드로 실행하면 창을 열지 않고도 작업을 수행합니다.창이 열리지 않은 경우 어떻게 wxWidget 응용 프로그램을 종료합니까?

App::OnInit() 오버레이에 false을 반환 할 수 있으며 응용 프로그램이 종료되지만 종료 코드도 문제가 있음을 나타 내기 위해 설정됩니다.

그런 경우 어떻게해야 제대로 종료 할 수 있습니까? 리턴 코드를 어떻게 설정할 수 있습니까? 문서 여기

답변

2

메인 이벤트 루프를 입력하면 YourApp::OnInit()에서 true을 반환 할 때와 같이 응용 프로그램을 종료하려면 종료해야합니다. 이 작업은 ExitMainLoop()을 사용하여 수행됩니다.이 작업은 일반적으로 마지막 최상위 창을 삭제할 때 호출되지만 수동으로 호출 할 수도 있습니다.

메인 루프 이벤트를 전혀 입력하지 않은 경우 YourApp::OnInit()에서 false을 반환하는 것이 프로그램을 즉시 종료하는 가장 간단한 방법이지만 이미 알고 있듯이 wxWidgets 지점에서 응용 프로그램을 초기화하지 못했음을 나타냅니다. 보기가 없으므로 기본적으로 프로그램은 0이 아닌 종료 코드로 종료됩니다. 자신의 종료 코드를 반환하려면 OnInit()에서 true을 계속 반환하고 OnInit()이 성공하면 OnRun()이 다음에 호출되면 무시하고 아무 것도하지 않고 코드를 반환합니다. 특히 기본 이벤트를 입력하는 기본 클래스 버전을 호출하지 않는 것이 좋습니다. 고리.

+0

테스트했지만 작동하지 않습니다. 윈도우가 열리기 전에 주 루프 probalby가 아직 존재하지 않기 때문에 주 루프를 종료하는 것이 효과가 없다고 가정합니다. – Devolus

+0

죄송합니다. 주 루프가 이미 실행 중일 때가 아니라 즉시 종료하고 싶다는 사실을 몰랐습니다. 나는이 사건을 다루기 위해 나의 대답을 업데이트 할 것이다. –

+0

감사합니다. 이것은 완벽하게 작동합니다. 지금. :) – Devolus

0

확인 : http://docs.wxwidgets.org/2.8/wx_wxappoverview.html

내가 wxExit이 문서는 비상시 사용에 말한다 비록 당신이 찾고있는 것 같아요.

+0

이것은 작동하지 않습니다. 적어도 false를 반환하는 것과 다르지 않습니다. :) wxWidgets가 창을 먼저 열지 않고 정상적으로 종료하는 방법을 제공하지 않는 것 같습니다. – Devolus

관련 문제