线程中使用文本框的问题
我在一个线程函数中想要得到一个文本框的值,用GetDlgItemText,结果出错,怎么解决呢??要怎么才能把这个文本框作为指针变量传递给线程函数呢??
[解决办法]
MFC 指针不能跨线程使用, 这是TLS的原因
只能使用对应的HANDLE
[解决办法]
把对话框的hwnd,和文本框的id 作为参数传入线程,在线程内调用::GetDlgItemText(hwnd,id,textout);
[解决办法]
昏,不合理的设计,偶合太厉害了。你的线程看样子是个工作者线程。你关心的只是计算参数。而不是文本框,文本框是参数的来源。或许一会你可能吧参数来源又弄到一个combox里边。是不是又要改动线程把combox传进去呢?如果一会又要用其它的控件,又继续改线程?
正确的做法是通过某个接口(类)方法来取得你要的参数,以及把执行结果分发出去。
也就是说执行计算的工作者线程关心的是参数的输入,计算,参数的输出。而不是编辑框什么的这样那样的控件。
[解决办法]
可以传指针,我就传了一个文档类的this指针进去,然后在线程函数里面用CXXDoc *Doc;然后让Doc = (CXXDoc *)lpParam;就可以完全使用了.