2009-09-06 2 views
1

XmCreate {Error | Warning | Info} 대화 상자를 사용하여 메인 윈도우가 열려 있고 프로그램 데이터를 사용할 수 없으면 SDL 기반 애플리케이션의 일부 메시지를 화면에 표시하려고합니다. 대화 상자를 열어 원하는 메시지를 인쇄하고 사용자가 [확인] 버튼을 클릭하면 대화 상자와 함께 작성해야하는 상위 위젯을 닫거나 제거해야합니다. 이제 afaik XtAppMainLoop은 사용자가 닫을 때까지 최고 위젯 메시지 (윈도우?)를 반복하고 처리합니다. 대화 상자가 반환 될 때 닫고 싶습니다. 어떻게해야합니까?XtAppMainLoop (Motif)를 죽이는 방법은 무엇입니까?

답변

2

Google 검색 및 독서로 몇 시간이고 XtAppSetExitFlag (XtAppContext)를 사용할 수 있다는 것을 알게되었습니다.

+0

사실, 나는 다른 생각을했습니다. 자식에서 fork() 및 상태 창을 수행 한 다음 자식을 종료하면됩니다. 너무 늦었 어! 죄송합니다! 나는 다른 것에 대해 생각하고있었습니다. 다른 질문의 예제 코드가 Xm/Xm.h를 포함했기 때문에 주제를 사용하고 있습니까? 이제 모티프에는 아무런 문제가 없지만 원하는 모든 것이 스플래시 화면 이었으면 과장되었습니다. 알려주십시오 ... – DigitalRoss

+0

메시지 상자의 시작 화면을 찾고 있지 않습니다. 음, 실제로는 그 이상입니다. 길고 여러 줄의 진단 메시지를 출력 할 수 있기를 원하기 때문에 텍스트 위젯을 가진 대화 상자가 필요합니다. 나는 마침내 Motif 프로그래밍 매뉴얼에서 쓸만한 것을 발견했으며 그것을 내 필요에 맞게 조정했습니다. 나는 코드를 게시 할 것이며, 코드를 완성 할 때 코드에 대한 링크를 게시 할 것이다. Btw, 프로그램 종료 응용 프로그램 루프를 피하기 위해 창 관리자 닫기 신호를 가로 채고 XtAppSetExitFlag 대신 응용 프로그램의 종료 플래그를 설정할 수 있습니다. 그러면 이벤트 루프가 종료됩니다. – karx11erx

1

XtAppMainLoop에서 반환되는 XtAppContext에서 간단합니다. p->exit_flag = 1;입니다.

응용 프로그램이 단순히 자신의 메인 루프를 포함하고 원하는대로 수행하는 것이 일반적입니다. 모든 XtAppMainLoop은 XtAppNextEvent(app, &event)을 호출 한 다음 XtDispatchEvent(&event)을 호출합니다.

+0

XtAppContext가 일부 포함 파일 및 전달 선언 트릭을 사용하여 일부 불투명 한 데이터 형식으로 바뀌 었으므로 정보를 보내 주셔서 감사하지만 XtAppContext.exit_flag에 액세스 할 수 없으며 필요한 (X11) 파일이 필요한지 확인할 수 없습니다. 그것을 작동시키기 위해 포함시키는 것. XtDestroyApplicationContext를 호출하여 원하는 것을 얻을 수 있다고 생각합니다. XtDestroyApplicationContext는 이벤트 루프도 처리합니다. – karx11erx

관련 문제