在某一个线程中访问控件,或对控件进行操作的时候,如调用SetWindowText,当窗口关闭时,有可能产生一个错误.
原因在于:窗口关闭时,控件先销毁,然后在销毁线程,当控件销毁时,若线程继续访问控件的话,则会出错.
另可能是由于,线程访问控件是没有获取到控件的句柄,直接对控件操作,如列表框m_listctrl.AddString("你好"),这的时候在线程里隐藏this指针没有包含列表框的句柄,对列表框操作也会报错.(这里,AddString函数里已有自己的解决办法ASSERT(IsWnd(m_hWnd))…会发生中断)
所以,在对控件操作之前最好是也加一个ASSERT(IsWnd(m_hWnd))…
获取主窗口的句柄指针的方法:CWnd *pWnd = AfxGetMainWnd();

当然,这个思路也适合其他方面线程编程的…望勿忘!

相关文章:

  • 2021-11-26
  • 2022-12-23
  • 2022-12-23
  • 2021-12-24
  • 2021-05-18
  • 2022-02-06
猜你喜欢
  • 2022-12-23
  • 2021-10-16
  • 2021-08-15
  • 2022-12-23
  • 2021-08-02
  • 2021-12-20
相关资源
相似解决方案