win32 SDK平台下自定义消息WM_SELFMSG由工作线程1发送给线程2接受响应做某事,请给个实例。
1个回答
展开全部
首先,主线程必须是窗体线程,也就是主线程负责窗体的消息处理 ,
然后用 _beginthreadex 开一个后台线程,在后台线程里面用 SendMessage 或者 PostMessage 给主线程发送 WM_SELFMSG 消息就可以了,主线程 case WM_SELFMSG 之后就可以处理了 。
Win32 SDK 自定义消息非常简单,用 #define 就可以了,比如 :
#define WM_SELFMSG WM_USER + 1
要注意的是,自定义消息的值一定要大于 WM_USER 但不能等于,因为 WM_USER 以下的值都是保留给系统使用的,否则会产生消息冲突 。
然后用 _beginthreadex 开一个后台线程,在后台线程里面用 SendMessage 或者 PostMessage 给主线程发送 WM_SELFMSG 消息就可以了,主线程 case WM_SELFMSG 之后就可以处理了 。
Win32 SDK 自定义消息非常简单,用 #define 就可以了,比如 :
#define WM_SELFMSG WM_USER + 1
要注意的是,自定义消息的值一定要大于 WM_USER 但不能等于,因为 WM_USER 以下的值都是保留给系统使用的,否则会产生消息冲突 。
追问
谢谢你的回答已经很好了。但是我如果从主进程调度工作线程1(以sendmessage自定义消息的给主线程的方式)工作状态,是否只有SuspendThread()或者ResumeThread()来调度?还是可以通过主---->工作线程1也发送消息的模式?但是工作线程1一般没有窗体的,而是从事后台做某项特定工作的。但是如果主线程也可以通过发送消息模式调度工作线程1的话,那么工作线程1如何接受主线程发来的消息并处理呢?
谢谢!
追答
呵呵,这个就简单了,不一定要通过发送窗体消息,我们可以使用一个全局变量来控制后台线程的工作状态,主线程将全局变量设置成不同的值,后台线程根据这个全局变量的值来暂停、停止,或者继续工作,都可以 。
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询