MFC 多线程下使用UpdateData的方法
2014-05-11 08:53
267 查看
在randomDlg.h
//定义用户消息,不可与系统消息冲突,所以就这样定义
//WM+USER表示用户消息,加100还是加其他值并没多大区别的
#define WM_MYUPDATEDATA WM_USER+100
在线程内
//向主程序框架MainFrm发送消息
//SendMessage第二第三参数可以为其他更多的类型,不局限于此
DWORD RondomLeftThread(CRandomDlg *p)
{
p->SendMessage(WM_MYUPDATEDATA,FALSE);
}
//调用线程的地方
hThread_1=CreateThread(NULL,
0,
(LPTHREAD_START_ROUTINE)RondomLeftThread,
this,
0,
(unsigned long *)&ThreadID);
在randomDlg.cpp内
//关联自定义消息
BEGIN_MESSAGE_MAP(CRandomDlg, CDialog)
//{{AFX_MSG_MAP(CRandomDlg)
ON_WM_PAINT()
ON_WM_QUERYDRAGICON()
ON_MESSAGE(WM_MYUPDATEDATA,OnUpdateMyData)
//}}AFX_MSG_MAP
END_MESSAGE_MAP()
定义OnUpdateMyData
class CRandomDlg : public CDialog
{
// Construction
public:
CRandomDlg(CWnd* pParent = NULL); // standard constructor
// Dialog Data
//{{AFX_DATA(CRandomDlg)
enum { IDD = IDD_RANDOM_DIALOG };
HANDLE hThread_1;
HANDLE hThread_2;
//}}AFX_DATA
// ClassWizard generated virtual function overrides
//{{AFX_VIRTUAL(CRandomDlg)
protected:
virtual void DoDataExchange(CDataExchange* pDX); // DDX/DDV support
//}}AFX_VIRTUAL
// Implementation
protected:
HICON m_hIcon;
// Generated message map functions
//{{AFX_MSG(CRandomDlg)
virtual BOOL OnInitDialog();
afx_msg void OnPaint();
afx_msg HCURSOR OnQueryDragIcon();
LRESULT OnUpdateMyData(WPARAM wParam, LPARAM lParam);
//}}AFX_MSG
DECLARE_MESSAGE_MAP()
public:
void EnableDisplay(int,BOOL);
};
实现OnUpdateMyData
LRESULT CRandomDlg::OnUpdateMyData(WPARAM wParam, LPARAM lParam)
{
UpdateData(wParam);
return 1;
}
//定义用户消息,不可与系统消息冲突,所以就这样定义
//WM+USER表示用户消息,加100还是加其他值并没多大区别的
#define WM_MYUPDATEDATA WM_USER+100
在线程内
//向主程序框架MainFrm发送消息
//SendMessage第二第三参数可以为其他更多的类型,不局限于此
DWORD RondomLeftThread(CRandomDlg *p)
{
p->SendMessage(WM_MYUPDATEDATA,FALSE);
}
//调用线程的地方
hThread_1=CreateThread(NULL,
0,
(LPTHREAD_START_ROUTINE)RondomLeftThread,
this,
0,
(unsigned long *)&ThreadID);
在randomDlg.cpp内
//关联自定义消息
BEGIN_MESSAGE_MAP(CRandomDlg, CDialog)
//{{AFX_MSG_MAP(CRandomDlg)
ON_WM_PAINT()
ON_WM_QUERYDRAGICON()
ON_MESSAGE(WM_MYUPDATEDATA,OnUpdateMyData)
//}}AFX_MSG_MAP
END_MESSAGE_MAP()
定义OnUpdateMyData
class CRandomDlg : public CDialog
{
// Construction
public:
CRandomDlg(CWnd* pParent = NULL); // standard constructor
// Dialog Data
//{{AFX_DATA(CRandomDlg)
enum { IDD = IDD_RANDOM_DIALOG };
HANDLE hThread_1;
HANDLE hThread_2;
//}}AFX_DATA
// ClassWizard generated virtual function overrides
//{{AFX_VIRTUAL(CRandomDlg)
protected:
virtual void DoDataExchange(CDataExchange* pDX); // DDX/DDV support
//}}AFX_VIRTUAL
// Implementation
protected:
HICON m_hIcon;
// Generated message map functions
//{{AFX_MSG(CRandomDlg)
virtual BOOL OnInitDialog();
afx_msg void OnPaint();
afx_msg HCURSOR OnQueryDragIcon();
LRESULT OnUpdateMyData(WPARAM wParam, LPARAM lParam);
//}}AFX_MSG
DECLARE_MESSAGE_MAP()
public:
void EnableDisplay(int,BOOL);
};
实现OnUpdateMyData
LRESULT CRandomDlg::OnUpdateMyData(WPARAM wParam, LPARAM lParam)
{
UpdateData(wParam);
return 1;
}
相关文章推荐
- 多线程在C、Win32和MFC下的使用方法
- 多线程下使用UpdateData方法
- MFC之UpdateData函数使用方法
- 多线程在C、Win32和MFC下的使用方法
- 多线程在C、Win32和MFC下的使用方法
- 多线程在C、Win32和MFC下的使用方法
- MFC之UpdateData函数使用方法
- 多线程在C、Win32和MFC下的使用方法
- MFC中使用boost::bind进行多线程编程的一种方法
- 多线程(七)~join方法的使用
- 一个多线程使用方法例子
- 创建多线程 使用代理方法
- Win32 多线程的创建方法和基本使用
- MFC CListCtrl 列表视图类使用方法 以及几种技巧
- MFC-为子窗体/子窗口的静态控件的特定位置/区域 增加提示/tips信息 使用自绘方法
- 多线程中使用静态方法---转
- [ggk itcast周六java]java多线程二种方法,及其安全。内部类及匿名类的使用方法。
- VS2013在MFC中使用ADO方法操作Access2013数据库
- 在多线程环境中使用HashMap会有什么问题?在什么情况下使用get()方法会产生无限循环?
- Java多线程中关于join方法的使用实例解析