c++多线程读写窗体控件_自定义消息的实现

c++多线程读写窗体控件_自定义消息的实现

一、c++多线程读写窗体控件 这个我研究啦半天终于搞定共享给大家:
   基本代码为

 1.线程定义在头文件.H中
  protected:
   HANDLE hThread1;
    static DWORD WINAPI  fun1( LPVOID lpParameter );  

 2. 线程函数
 DWORD WINAPI   CTestDlg::fun1( LPVOID lpParameter )

  {
 CString str="你好";
   //这里是关键
   HWND   hWnd  =  ::FindWindow(NULL ,"test"); //test为窗体标题  
   HWND  hEdit   =   ::GetDlgItem(   hWnd   ,   1002 ); //1002是主线程窗体中控件ID在resource.H中  能找到
   HWND  hEdit1   =   ::GetDlgItem(   hWnd   ,   1003 ); 
       ::SendMessage(hEdit1,WM_SETTEXT,0,*(LPARAM*)&str);//设置控件ID=1002文本值
       ::SendMessage(hEdit,WM_GETTEXT,10,*(LPARAM*)&str);//读取控件ID=1003文本值
 return 0;
  }
3.建立线程
void CTestDlg::OnButton1() 
{
      UpdateData(true);
 HANDLE hThread1;
 hThread1=CreateThread(NULL,0,fun1,GetDlgItem(IDD_TEST_DIALOG)->GetSafeHwnd(),0,NULL);
 CloseHandle(hThread1);
}
二、多线程调用自定义消息给控件赋值
    
  1.定义消息在StdAfx.h文件中
    #define WM_MyMessageo WM_USER + 200 
    #define WM_MyMessaget WM_USER+ 201
  2.绑定消息对应的方法在项目的.H文件中
     afx_msg  void OnMyMessage1(WPARAM wParam, LPARAM lParam);
     afx_msg  void OnMyMessage2(WPARAM wParam, LPARAM lParam);
  注意格式不要错误个人测试啦下参数不能改变 究竟能否改变参数 我没有深入研究.
  3.在项目文件.CPP中写入消息
     BEGIN_MESSAGE_MAP(CTestDlg, CDialog)
 //{{AFX_MSG_MAP(CTestDlg)
 ON_WM_SYSCOMMAND()
 ON_WM_PAINT()
 ON_WM_QUERYDRAGICON()
 ON_BN_CLICKED(IDC_butt, Onbutt)
 ON_BN_CLICKED(IDC_BUTTON1, OnButton1)
         //自定义消息下面的,上面的是类导航器生产的.可以看出系统生产的也是MS自定义的没什么特别。
        ON_MESSAGE(WM_MyMessageo,OnMyMessage1)
        ON_MESSAGE(WM_MyMessaget,OnMyMessage2)
 //}}AFX_MSG_MAP
    END_MESSAGE_MAP()

   4.执行自定义消息
       void CTestDlg::OnButton1() 
       {
      SendMessage(WM_MyMessageo,NULL,0);
      }

  这个消息也可以应用到线程的函数fun1中

  DWORD WINAPI   CTestDlg::fun1( LPVOID lpParameter )

  {::SendMessage(hWnd,WM_MyMessaget,0,0); 
  }
 来改变窗体中的控件值。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值