MFC +线程 - 窗口卡住/移动非常慢

时间:2015-03-01 14:54:39

标签: c++ multithreading performance mfc

昨天我创建了一些类,它们应该从MFC窗口动态更新标签(添加,删除)。

简短概述:

我的MainWindow的对象为CTabCtrl 我的MainWindow的对象为Watcher*CTabCtrl传递给Watcher*中的对象OnInitDialog,并且线程正在启​​动。

班级Watcher

  • 继承自Thread类,是一个Thread
  • 指向 MainWindow CTabCtrl
  • 有一个std :: map(DWORD_PTR,std :: auto_ptr [ DetailsView ])
  • 查找具有特殊名称的Windows,如果找到,则会创建 DetailsView 的新对象,并将其添加为新标签

    @ 1

  • validiates - IsWindow(HWND) - 在每次循环运行时,所有找到已创建选项卡的Windows仍然有效

@ 1

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);

班级DetailsView继承自 CDialogEx
班级DetailsView的对象为UpdateDetails*

班级UpdateDetails

  • 继承自Thread类,是一个线程
  • 有一个std :: map(EnumDetails,CWnd *),它存储 - 在当前情况下 - 所有 CEdit - DetailsView
  • 的方框
  • validiates - IsWindow(HWND) - 也只是使用第二个std :: map(CWnd *)second-&gt; SetWindowTextW


我的问题:

  • 速度非常慢,拖动时移动速度很慢(没有“软”拖动),并且也很慢地更改标签。

如果您需要有关此问题的更多信息,请发表评论。

0 个答案:

没有答案