C++ MFC+线程-窗口阻塞/移动非常缓慢

C++ MFC+线程-窗口阻塞/移动非常缓慢,c++,multithreading,performance,mfc,C++,Multithreading,Performance,Mfc,昨天,我创建了几个类,这些类应该可以从MFC窗口动态地更新tabs add和remove 简要概述: 我的主窗口有一个CTabCtrl对象。 我的主窗口有一个Watcher*对象。 此CTabCtrl被传递给OnInitDialog中的object Watcher*,线程正在启动 课堂观察者 继承自Thread类,并且是线程 有一个指向我的主窗口CTabCtrl的指针 有一个std::mapDWORD_PTR,std::auto_PTR[DetailsView] 查找具有特殊名称的窗口,如果找到

昨天,我创建了几个类,这些类应该可以从MFC窗口动态地更新tabs add和remove

简要概述: 我的主窗口有一个CTabCtrl对象。 我的主窗口有一个Watcher*对象。 此CTabCtrl被传递给OnInitDialog中的object Watcher*,线程正在启动

课堂观察者

继承自Thread类,并且是线程 有一个指向我的主窗口CTabCtrl的指针 有一个std::mapDWORD_PTR,std::auto_PTR[DetailsView] 查找具有特殊名称的窗口,如果找到,它将创建DetailsView的新对象并将其添加为新对象tab@1 validiates-IsWindowHWND-在循环的每次运行中,所有找到的窗口(为其创建了选项卡)仍然有效 @1 类DetailsView继承自CDialogEx。 类DetailsView有一个UpdateDetails*对象

类更新了详细信息

继承自Thread类,并且是线程。 有一个std::mapEnumDetails,CWnd*,在当前情况下,它存储DetailsView的所有CEdit框 validiates-IsWindowHWND-也可以使用std::mapCWnd*second->SetWindowTextW中的第二个 我的问题是: 它非常慢,拖动时移动缓慢,没有软拖动,更改选项卡也非常慢。
如果需要有关此问题的更多信息,请留下评论。

不建议构建跨线程窗口层次结构。当您从Watcher线程创建DetailsView时,您正在将其添加到另一个线程所拥有的CTabCtrl中。您应该在单个线程上构建整个GUI,并让Watcher线程通过消息或其他同步机制向GUI线程报告事件。@IInspectable我明白了,谢谢。我会把它改写成这样。
DetailsView *dv = new DetailsView(hwndFoundWindow);
dv->Create(DetailsView::IDD, m_MyOwner);
//std::map<DWORD_PTR, std::auto_ptr<DetailsView> >::insert(std::make_pair(ID, dv));
int iTabCount = (CTabCtrl*).GetItemCount();
LONG lInsertedItem = (CTabCtrl*).InsertItem(TCIF_TEXT, iTabCount + 1, uText(""), 0, 0, 0, 0);