MFC下多线程UpdateData的使用方法

来源:互联网 发布:服装设计的网络课程 编辑:程序博客网 时间:2024/04/30 01:01
  • 在randomDlg.h 
    1. //定义用户消息,不可与系统消息冲突,所以就这样定义  
    2. //WM+USER表示用户消息,加100还是加其他值并没多大区别的  
    3. #define WM_MYUPDATEDATA WM_USER+100  
  • 在线程内
    1. //向主程序框架MainFrm发送消息  
    2. //SendMessage第二第三参数可以为其他更多的类型,不局限于此  
    3. DWORD RondomLeftThread(CRandomDlg *p)  
    4. {  
    5.       p->SendMessage(WM_MYUPDATEDATA,FALSE);  
    6. }  
    7. //调用线程的地方  
    8. hThread_1=CreateThread(NULL,  
    9.         0,  
    10.         (LPTHREAD_START_ROUTINE)RondomLeftThread,  
    11.         this,  
    12.         0,  
    13.         (unsigned long *)&ThreadID);  
  • 在randomDlg.cpp内
    1. //关联自定义消息  
    2. BEGIN_MESSAGE_MAP(CRandomDlg, CDialog)  
    3.     //{{AFX_MSG_MAP(CRandomDlg)  
    4.     ON_WM_PAINT()  
    5.     ON_WM_QUERYDRAGICON()  
    6.     ON_MESSAGE(WM_MYUPDATEDATA,OnUpdateMyData)  
    7.     //}}AFX_MSG_MAP  
    8. END_MESSAGE_MAP()  
  • 定义OnUpdateMyData
    1. class CRandomDlg : public CDialog  
    2. {  
    3. // Construction  
    4. public:  
    5.     CRandomDlg(CWnd* pParent = NULL);   // standard constructor  
    6.   
    7. // Dialog Data  
    8.     //{{AFX_DATA(CRandomDlg)  
    9.     enum { IDD = IDD_RANDOM_DIALOG };  
    10.     HANDLE hThread_1;  
    11.     HANDLE hThread_2;  
    12.     //}}AFX_DATA  
    13.     // ClassWizard generated virtual function overrides  
    14.     //{{AFX_VIRTUAL(CRandomDlg)  
    15.     protected:  
    16.     virtual void DoDataExchange(CDataExchange* pDX);    // DDX/DDV support  
    17.     //}}AFX_VIRTUAL  
    18.   
    19. // Implementation  
    20. protected:  
    21.     HICON m_hIcon;  
    22.   
    23.     // Generated message map functions  
    24.     //{{AFX_MSG(CRandomDlg)  
    25.     virtual BOOL OnInitDialog();  
    26.     afx_msg void OnPaint();  
    27.     afx_msg HCURSOR OnQueryDragIcon();  
    28.     LRESULT OnUpdateMyData(WPARAM wParam, LPARAM lParam);  
    29.     //}}AFX_MSG  
    30.     DECLARE_MESSAGE_MAP()  
    31. public:  
    32.     void EnableDisplay(int,BOOL);  
    33. };  
  • 实现OnUpdateMyData
    1. LRESULT CRandomDlg::OnUpdateMyData(WPARAM wParam, LPARAM lParam)  
    2. {  
    3.     UpdateData(wParam);  
    4.     return 1;  
    5. }  


原创粉丝点击