使用MFC过程中遇到的问题以及解决方法(一)

时间:2021-04-14 04:31:43

在自己工作的过程中,遇到了有关于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的更新