我正在开发一个 C++ FLTK 应用程序。这是一个多线程应用程序,它使用以下代码在线程中创建和显示模式窗口:
Fl_Double_Window* dlg = new Fl_Double_Window(0, 0, 200, 100);
...
dlg->set_modal();
Fl::visual(FL_DOUBLE|FL_INDEX);
dlg->show();
然后在同一个线程中创建一个新线程并将指向Fl_Double_Window
对象的指针作为线程参数传递给它:
CreateThread(
NULL, // default security attributes
0, // use default stack size
&beginProgress, // thread function name
(LPVOID) dlg, // argument to thread function
0, // use default creation flags
NULL);
& 在我的线程函数中我做了一些操作 & 然后我需要隐藏显示的模式窗口:
DWORD WINAPI beginProgress(LPVOID args)
{
//do some operations
((Fl_Double_Window*)args)->hide();
return 0;
}
问题出在我的代码成功执行而没有错误,但是在执行对象指针hide
的方法之后dlg
,窗口不会隐藏并且似乎调用hide
甚至删除窗口对象delete dlg
都没有效果。
我猜这个问题与多线程行为有关,但我猜不出问题的原因以及我应该如何解决它。