宁静致远

------------------------------------------------------------------------------------

VC知识库BLOG 首页 新随笔 联系 聚合 登录
  45 Posts :: 0 Stories :: 112 Comments :: 1 Trackbacks

公告

-----000来了哈000-----

留言簿(0)

随笔分类

随笔档案

文章档案

相册

技术FAQ

搜索

最新评论

阅读排行榜

评论排行榜

GetMessage()从调用线程的消息队列中取消息,如果队列空就阻塞。

代码如下:

DWORD __stdcall PostMess(LPVOID lp);

void CTMsgDlg::OnBnClickedButton1()
{
 // TODO: 在此添加控件通知处理程序代码
    hThreadPM= CreateThread(NULL, 0, PostMess, NULL, 0, &dwThreadId);
   
}

void CTMsgDlg::OnBnClickedButton2()
{
 // TODO: 在此添加控件通知处理程序代码
 PostThreadMessage(dwThreadId,8888,0,0);
}

 

MSG message;

DWORD __stdcall PostMess(LPVOID lp)
{
 
    while(::GetMessage(&message, NULL, 0, 0))
    {
        ::TranslateMessage(&message);
        ::DispatchMessage(&message);
        switch(message.message)
        {
        case 8888:
   ::Beep(100,100);
            break;
  }
 }
 return 0;

}

posted on 2007-11-06 16:34 blog of vc_student 阅读(2614) 评论(3)  编辑 收藏

Feedback

# 应该是多于的 2007-11-06 19:26 梆菜
TranslateMessage(),DispatchMessage()是多于的。

# 系统不给线程发消息吗?如果发的话没有这两个是不是就。。。 2007-11-06 20:49 student
系统消息得不到处理呢?
我想应该发的,那么消息不到线程队列?


# re: 我会发线程消息了 2007-11-09 14:24 gaoqing000


标题  
姓名  
主页
验证码 *
内容   
  登录  使用高级评论  Top
[使用Ctrl+Enter键可以直接提交]