Я просто ищу встроенную в Windows OpenGL / Game систему, похожую на окна. Мне нужно отобразить одно окно для пользователя.
Я смотрю в wxWidgets.
Поскольку он работает путем «кражи» WinMain / MainLoop, я пытаюсь взломать его, чтобы я мог запустить его основной цикл в отдельном потоке.
Поскольку я не мог заставить его wxThread работать хорошо, я сделал "пример" с потоками Windows ... но инициализация все еще не работает для внутренних компонентов wxWidgets ...
Есть ли какие-либо отзывы по этому поводу?
Мой код такой:
class MyApp: public wxApp
{
virtual bool OnInit();
};
DECLARE_APP(MyApp)
IMPLEMENT_APP_NO_MAIN(MyApp)
DWORD WINAPI MyThreadFunction( LPVOID lpParam )
{
wxApp* pApp = new MyApp();
wxApp::SetInstance(pApp);
int argc = 0; wxChar ** argv = NULL;
wxEntryStart(argc, argv);
pApp->CallOnInit();
pApp->OnRun();
return 0;
}
int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, wxCmdLineArgType lpCmdLine, int nCmdShow) {
DWORD id = 0;
CreateThread(NULL,0, MyThreadFunction,NULL, 0,&id);
assert(id != NULL);
return 0;
}
Я попытался сделать код инициализации wxWidgets в основном потоке и вызвать только CallOnInit () в отдельном потоке, но тот же результат.