我在一个线程函数中使用
COpt *pTestDlg;
SendMessage(pTestDlg->GetSafeHwnd(),WM_DELETECTR,0,0);
向一个CFormView的子类COpt发送消息,可发现好像没有调用消息函数(我将断点设置在消息函数内部,并没有停止)
我如果要响应消息的话,该如何是好呢,另外,是不是在线程中直接调用函数容易出错,采用发送消息的方法来调用函数可以吗?
多谢各位!

解决方案 »

  1.   

    pTestDlg是否指向正确的窗口?发消息是可以的,可能是你的断点不正确,或者vc在调试多线程的时候,有时不能正确处理断点。直接调用函数不是很好,造成复杂的并发,最好用消息,不过你用SendMessage和直接调用函数效果一样,因为SendMessage是同步的,相当于间接调用了消息函数。应该用PostMessage,PostMessage是异步的,发消息后不立即调用消息函数。这样两个类那部分并发看得比较清楚。
      

  2.   

    多谢楼上的大侠!
    改成PostMessage后,好像还是不行,这个程序本来是基于对话框的,一切都很正常,在消息函数中设置了断点也会停止,可是改成FormView之后就不行了,好郁闷啦
      

  3.   

    你的FormView可以响应界面的消息吗?
      

  4.   

    在线程使用SendMessage给别的线程的窗口是不太妥当的。
    使用PostMessage会好一些。建议在主窗口中建立一个类似消息中心的东西,所有线程的消息都发给它,由它转发到各个目的窗口。