【发布时间】:2013-06-10 17:32:24
【问题描述】:
我正在开发一个 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;
}
问题出在我的代码成功执行且没有错误,但是在执行dlg 对象指针的hide 方法后,窗口不会隐藏并似乎调用hide 甚至使用delete dlg 删除窗口对象有没有效果。
我猜这个问题与多线程行为有关,但我无法猜测问题的原因以及我应该如何解决它。
【问题讨论】:
标签: c++ multithreading widget window fltk