2011-07-31 6 views
0

내가 onThread 기능 에서 wglGetCurrentDC()wglGetCurrentContext()을 실행은 (EVT_THREAD(wxID_ANY,MyCanvas::onThread) 여기 선언이 함수가 호출되어야한다). 내가 onThread에서하지를 실행하면 작업이 문제를 해결하기 위해 주위에 무엇 ... 괜찮습니다 - (I 스레드에서 이벤트를 가져올 때이를 실행해야합니다!)wxWidgets에 스레드 내 응용 프로그램에서

알렉스으로

내가 리디렉션 wxPostEvent 변경 제안 onThread 함수에서 이벤트를 잡는 주 스레드에 이벤트.이 onThread 함수에서 내가 가지고 wglGetCurrentDC()wglGetCurrentContext() 호출 ... 그들은 여전히 ​​null.Please 내가 뭘 잘못 설명하고있다. 그리고 그 문제를 해결하는 방법.

답변

1

아마도 오해입니다.하지만 Windows 관련 코드가 아닌 wxGLCanvas 및 wxGLContext를 사용해야합니까? 적어도 다른 wxWidget 코드와 호환 가능할 것입니다.

어쨌든 wglGetCurrentDC documentation에서이 함수는 현재 윈도우에 대한 DC가 없으면 NULL을 반환합니다. 이는 컨텍스트가 어떻게 든 파괴되었거나 호출 한 것으로 생각하는 창에서 컨텍스트가 호출되지 않았 음을 나타냅니다 (아마도 스레딩 때문일 수 있습니다). 나는 Alex가 말한 것을 반복 할 것이다; 주 스레드 이외의 스레드에서 UI 코드를 호출하지 마십시오.

스레드에서 돌아 오는 방법을 보여주는 코드를 게시 할 수 있으면 문제를 파악하는 데 도움이 될 수 있습니다. 그것은 당신이 스레드에서 UI 물건을하고있는 것 같아요 그것을 실현하지. (어떤 코드도 보지 않고 말하기가 어렵습니다.)

1

작업자 스레드의 UI 관련 항목을 만지지 마십시오. 이것은 모든 UI 프레임 워크에 대한 일반적인 요구 사항입니다. wxPostEvent를 사용하여 작업을 기본 응용 프로그램 스레드로 리디렉션합니다.

+0

wxPostEvent를 사용하여 이벤트를 메인 스레드로 리디렉션했습니다.이 스레드는 onThread 함수에서 이벤트를 포착합니다.이 onThread 함수에서 wglGetCurrentDC() 및 wglGetCurrentContext() 호출 ... 그들은 여전히 ​​null을 반환합니다. 내가 뭘 잘못하고 있는지 설명해주십시오. 그리고 어떻게 문제를 해결할 수 있습니까? – Yakov

관련 문제