z1195224900 塞莲 经理  2014年01月26日
关于为线程创建消息队列的问题 求大神 易语言代码
据我所知线程创建后是没有消息队列的.需要调用GetMessage 或 PeekMessage 之类关于消息的函数。可是我调用后依然接收不到信息
MSDN解释:
引用
When a message is blocked by UIPI the last error, retrieved with GetLastError, is set to 5 (access denied).

The thread to which the message is posted must have created a message queue, or else the call to PostThreadMessage fails. Use the following method to handle this situation.

Create an event object, then create the thread.

Use the WaitForSingleObject function to wait for the event to be set to the signaled state before calling PostThreadMessage.

In the thread to which the message will be posted, call PeekMessage as shown here to force the system to create the message queue.

PeekMessage(&msg, NULL, WM_USER, WM_USER, PM_NOREMOVE)

Set the event, to indicate that the thread is ready to receive posted messages.

虽然知道中文意思 但是完全搞不懂
下面是 线程现在做的事:易语言代码
.版本 2
.支持库 spec

.子程序 线程
.局部变量 msg, MSG, , , MSG类型的变量 要来接收信息

PeekMessage (msg, 0, #WM_USER, #WM_USER, #PM_NOREMOVE) ' 第一次检查消息队列 “ 返回0 ” 这个应该就是创建队列把?
.判断循环首 (运行中 = 真)
PeekMessage (msg, 0, #WM_USER, #WM_USER, #PM_REMOVE) ' 检查消息队列 “ 返回0 ”
调试输出 (msg.message, msg.wParam, msg.lParam) ' 输出的都是 0 啊
Sleep (2000)
.判断循环尾 ()

然后我就 API_PostThreadMessage (线程Id, 1, 1, 1) 返回0 再调用GetLastError () 返回1159
还是投递失败啊 为什么
PostThreadMessage 后面的3个参数可以自定把?

求大牛 在线等回答
...全文
193 点赞 收藏 2
写回复
2 条回复

还没有回复,快来抢沙发~

发动态
发帖子
API
创建于2007-09-28

1196

社区成员

2.3w+

社区内容

VB API
社区公告
暂无公告