我用MFC 做的,程序中使用了自己写的控件  在程序中的控件的事件处理程序是不是属于主线程  也就是说跟主线程中的其他的不必线程同步吧?

解决方案 »

  1.   

      Windows操作系统下的窗口所属:一个窗口在那个Thread创建,他就属于哪个Thread,也就说窗口的消息将全部发送这个Thread的消息队列当中,那么 处理自然也就在这个Thread中完成(因为GetMessage,PeekMessage这些函数都是Thread 相关的也就说他只能取出,本Thread的消息队列内的消息)。
       这里有一点需要说明就是 SendMessage 的消息是否进入消息队列的问题:回答是有时进,有时不进。
       窗口win_A 在线程 thA中创建,那么当SendMessage 在thA 中向窗口 wind_A发送消息的时候消息不进入队列,而是直接调用 窗口的处理函数并消息传递进入,而如果sendmessage在thB中向 win_A发送消息的时候,这个消息会进入thA的消息对列
      

  2.   

    有不明白的地方:我试了一下,用CWinThread创建了一个线程new 了一个全局的对话框对象,在CWinThread的InitInstance中Create();在这个对话框中添加了消息影射,用AFXMessageBox()弹出消息框,然后从另一个线程向该对话框SendMessage(),响应后弹出了消息框,但界面线程(主线程)也堵塞了,这是为什么?
      

  3.   

    我就是想要1楼的后面那个说法,老早就想了,如果SendMessage的发送方和接收方不在同一个线程,它怎么可以直接调用的,呵呵。