读书人

新手跪求MFC中的指针有关问题

发布时间: 2013-07-08 14:13:00 作者: rapoo

新手跪求,MFC中的指针问题
我写了一个小型控制台程序,然后改到MFC中。

新手跪求,MFC中的指针有关问题

当点击按钮时,在静态文本框中输出文字。

新手跪求,MFC中的指针有关问题

点击按钮是新建五个线程,线程的入口函数是全局函数,新建了一个类CPublic来存放函数。

新手跪求,MFC中的指针有关问题

我在创建线程时,是在主对话框中,将this指针穿进去,然后在线程的入口函数中,因为是Public类的函数,
又要在主对话框中输出内容,所以就把this指针传了进去,函数定义如下图:

新手跪求,MFC中的指针有关问题

将指针转变成主对话框CMFCDlg类的指针,我把文本框绑定了一个CString变量,然后将值赋给m_str,
然后调用UpdateData(false);显示文字。但是运行时出错:

新手跪求,MFC中的指针有关问题

但是我注释掉
pDlg->UpdateData(false);这一行代码,就可以正常运行了。

初学MFC,我搞了两天也没搞明白为什么,我尽可能把问题描述清楚,希望能够得到高人的帮助解决这个问题,谢谢大家 MFC 指针 多线程
[解决办法]
MFC 会使用线程相关的数据结构来保存一些窗口的信息. 跨线程调用就不行了. 试试不通过 MFC, 直接往窗口上发送消息或 SetDlgItemText 这样的 API 来操作看行不行.
[解决办法]
UpdateData这样的函数不能用在线程函数中
[解决办法]

引用:
Quote: 引用:

UpdateData这样的函数不能用在线程函数中

那我如果线程函数需要输出东西到静态文本框的话,要用什么方法?
可以得到静态框的句柄然后SetWindowText,也可给窗口发送消息,然后再消息处理函数中使用UpdateData那样的赋值方法
[解决办法]
最好在线程中像主窗口发送消息。
由主窗口自己来updatedata

读书人网 >C++

热点推荐