我基本上希望在我的 OpenGL/Game 中加入一个类似于本机的窗口 GUI 系统。我需要向用户显示一个窗口。
我正在研究 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(),但结果相同。