求高人解决问题,这个问题困难小弟很久了,第一次写线程
我想实现一个这样的问题,当我点击按钮的时候,就开始我的计算,然后把计算的结果显示到编辑框中,在这里当我点击按钮的时候我创建一个线程用来进行计算。现在的问题来了,我要怎么样得到线程计算的结果。贴上代码吧。
//类头文件// ClxDlg 对话框class ClxDlg : public CDialog{// 构造public: ClxDlg(CWnd* pParent = NULL); // 标准构造函数// 对话框数据 enum { IDD = IDD_LX_DIALOG }; protected: virtual void DoDataExchange(CDataExchange* pDX); // DDX/DDV 支持// 实现protected: HICON m_hIcon; CFileDialog m_FileDlg; CString m_Result; HANDLE m_CalcThread;//线程句柄 // 生成的消息映射函数 virtual BOOL OnInitDialog(); afx_msg void OnSysCommand(UINT nID, LPARAM lParam); afx_msg void OnPaint(); afx_msg HCURSOR OnQueryDragIcon(); DECLARE_MESSAGE_MAP()public: afx_msg void OnBnClickedScan(); afx_msg void OnBnClickedCalc(); static DWORD WINAPI ThreadProc(PVOID lpParamer);//线程函数private: static __int64 m_nCount1Bits;//我想要计算得到的数据 static DWORD _start; static DWORD _end; static CString m_strFile;};//作为类函数 注意是静态的DWORD WINAPI ClxDlg::ThreadProc(PVOID lpParamer){ DWORD qwNumOf1s; qwNumOf1s = 一系列计算所得; m_nCount1Bits = qwNumOf1s;//m_nCount1Bits 为我的类成员变量}//我点击按钮函数 这里我非常疑惑不知道这样子做对不对,感觉它根本就没有调用线程函数 第一次写线程所以不知道void ClxDlg::OnBnClickedCalc(){ // TODO: 在此添加控件通知处理程序代码 //int x = 0; //DWORD dwThreadId; m_CalcThread = CreateThread(NULL,0,ThreadProc,NULL,0,NULL); if (m_CalcThread != NULL) { //m_Result 是一个CString m_Result.Format(L"比特1的个数为:%I64d,耗时为:%d",m_nCount1Bits,_end - _start); GetDlgItem(IDC_EDIT_RESULT)->SetWindowText(m_Result); CloseHandle(m_CalcThread); }}