在自己工作的过程中,遇到了有关于C和C++的一些问题,在这里记录一下,以防止后期的编码过程中被同样的问题难住.
首先记录一下今天遇到的问题吧:
1.有关于MFC多线程更新UI(利用消息机制)的问题
第一步,应该先在主界面中创建一个独立的对象,例如要实现一个字符串的消息传递,就再头文件中定义一个字符串,在这里我要传递的是生成Excel的进度值. ,所以我定义的字符串为 CString ExcelUpdateStr ;
第二步,建立自己定义的消息ID,如果本消息只在当前对话框中进行,可以在当前对话框的源文件顶头部分定义 #define MSG_UPDATE_TEXT1001.
第三步,定义自己的消息函数,afx_msg LRESULT OnUpdateText(WPARAM wp,LPARAM lp);,并在对话框的消息映射列表中进行消息的映射ON_MESSAGE(MSG_UPDATE_TEXT,&DownloadDlg::OnUpdateText),这里需要注意的ON_MESSAGE表示该MESSAGE是自己定义的.
第四步,进行自定义消息函数的编写,根据自己的实际需求进行编写
LRESULT DownloadDlg::OnUpdateText(WPARAM wp,LPARAM lp){
EDIT_DOWNLOAD_TEST_CONTENT=ExcelUpdateStr;
UpdateData(FALSE);
return 0L;
}
通过该函数,即可在子线程中调用
dlg->ExcelUpdateStr = tempStr;
dlg->PostMessageA(MSG_UPDATE_TEXT,NULL,NULL);
通过该方法的调用,将消息传递给主线程,并实时进行UI的更新