文章详情

  • 游戏榜单
  • 软件榜单
关闭导航
热搜榜
热门下载
热门标签
php爱好者> php文档>MFC下多线程与消息机制的结合使用

MFC下多线程与消息机制的结合使用

时间:2011-01-07  来源:骑着乌龟逛街的兔子

   这里我用vc++6.0创建了一个名为Muti_Tread的对话框程序。

 在Muti_ThreadDlg.h : header file 中添加

    // Generated message map functions
    //{{AFX_MSG(CMuti_ThreadDlg)
    virtual BOOL OnInitDialog();
    afx_msg LRESULT OnMyMessage(WPARAM wParam, LPARAM lParam);//添加的消息声明

    //}}AFX_MSG
    DECLARE_MESSAGE_MAP()

  在 Muti_ThreadDlg.cpp : implementation file中

  首先定义

   #define WM_MY_MESSAGE (WM_USER+100)//WM_USER 有一些控件也使用,因此这里要加上100

 下一步 还是在Muti_ThreadDlg.cpp : implementation file中

   BEGIN_MESSAGE_MAP(CMuti_ThreadDlg, CDialog)
    //{{AFX_MSG_MAP(CMuti_ThreadDlg)
    ON_WM_SYSCOMMAND()
    ON_WM_PAINT()
    ON_WM_QUERYDRAGICON()
    ON_BN_CLICKED(IDC_BUTTON1, OnButton1)
    ON_MESSAGE(WM_MY_MESSAGE, OnMyMessage)//添加.
    //}}AFX_MSG_MAP
END_MESSAGE_MAP()

     同时实现消息处理函数

LRESULT CMuti_ThreadDlg::OnMyMessage(WPARAM wParam, LPARAM lParam)
{
    MessageBox("OnMyMessage!");
    return 0;
}

  这样完整的消息机制就建立了,这里是调用了MessageBox函数,其他的窗体函数以及按钮的消息响应函数也可以直接调用了。下面关键是在全局的函数中弹出消息,使得消息的响应函数OnMyMessage能够运行。翻阅了一些资料,总算给找到了

   使用     ::PostMessage(AfxGetMainWnd()->m_hWnd,WM_MY_MESSAGE,NULL,NULL);

    在全局函数中 

   void global()

{

  ::PostMessage(AfxGetMainWnd()->m_hWnd,WM_MY_MESSAGE,NULL,NULL);// 弹出消息

}

 最后创建线程

       HANDLE t_facedetect=CreateThread(NULL,0,(LPTHREAD_START_ROUTINE)global,NULL,0,0);//线程运行函数

  到此 结束

相关阅读 更多 +
排行榜 更多 +
火柴人战争血腥打击

火柴人战争血腥打击

飞行射击 下载
三角符文第一章下载

三角符文第一章下载

角色扮演 下载
闪客快打3无敌版下载

闪客快打3无敌版下载

飞行射击 下载