多线程全局函数与消息机制的结合

    前面一段时间,一直在想怎么样实现在全局的线程函数中实现调用窗体的一些函数(比如说在线程里面调用按钮单击处理函数,以及窗体的一些操作)。最近在网络 闲逛中发现了实现的方法,特意贴出来(ps:以前经常看别人写的一些东西,感觉很受用,这里也贡献一下自己的东西,希望能够帮助到别人)

   这里我用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);//线程运行函数

  到此 结束

       如果有问题可以发邮件给我 qunqun.xie@gmail.com


 

 

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值