UpdateData的问题

wjl_2001 2004-08-02 12:07:15
程序中的某一地方我用了UpdateData就出现非法,而在其它地方不会,想请问原因?是不是要在出现非法的语句前加上一句什么调用?
...全文
232 点赞 收藏 18
写回复
18 条回复
切换为时间正序
当前发帖距今超过3年,不再开放新的回复
发表回复
newsb 2004-08-16
还是用PostMessage()好一些
回复
32204577 2004-08-13
先自定义消息,然后用SendMessage(..,..,..,)向对话框类发送消息,进行数据的更新。是上策。
------------------------------------
32204577
------------------------------------
体验速度,体验CSDN新版论坛助手:http://community.csdn.net/Expert/TopicView.asp?id=3108679
回复
oyljerry 2004-08-13
嗯,两种方法:传指针和发消息,个人偏向发消息
回复
holyeagle 2004-08-13
可以把主程序的指针当做参数传到线程,线程中直接调用主程序的相应函数,不用发消息的
回复
jinrongfei 2004-08-13
在线程内,只能用在此线程内定义的对象。
回复
wjl_2001 2004-08-13
没办法,只能用自定义消息!!!
回复
hellopine 2004-08-13
同意楼上,我上边说错了
在附线程中不能调用主线程中窗口对象的UPDATEDATA()
建议发送消息到CMyDlg
在CMyDlg中执行你的GetMsg(RecvBuf,getlength);
回复
newsb 2004-08-13
在线程里面UpdateData要报错的
回复
hellopine 2004-08-13
请看:
UINT ListenPing(LPVOID lParam)
{
CABC*pAbc=CABC*(lParam);
if(pAbc->m_hWnd)
this->GetMsg(RecvBuf,getlength);
}



CABC::OnInitDialog()
{
.....

AfxBeginThread(ListenPing,this);

.....
}
回复
wjl_2001 2004-08-05
我讲得再详细点
一对话框主程序,类名为CABC;
在CABC的OnInitDialog里调用一全局线程ListenPing:
...
CreateThread(NULL,0,ListenPing,NULL,0,&dw);
.....


在ListenPing里
....
((CABC*)(AfxGetApp()->m_pMainWnd))->GetMsg(RecvBuf,getlength);
....

这样,我在CABC的GetMsg(RecvBuf,getlength)里
不能用UpdateData()
且不能调用我写的简单的对话框类

CDisplay d1;
d1.DoMoDal();
都会出现非操作,

请教大家,如何解决?

回复
wjl_2001 2004-08-03
up
回复
wjl_2001 2004-08-02
在OnInitDialog里一早就用了
m_pMainWnd=AfxGetMainWnd();

用句柄->SetWindowText("***")当然不会出现非法操作,但有时要更新一大批数据,故不宜如此做法!
回复
successq 2004-08-02
你是要实现数据的更新功能吧。
如果是的话,你可以试试
句柄->SetWindowText("***");
回复
holyeagle 2004-08-02
onInitDialog还没有完成,m_pMainWnd好像还是NULL
回复
wjl_2001 2004-08-02
代码太多太乱,简要说一下
对话框程序
在OnInitDialog里
建一线程,线程里简单地调用了主对话框里的一个函数

...
((CClientDlg *)(AfxGetApp()->m_pMainWnd))->GetMsg();
....
这样,在GetMsg里就不能UpdateData了,会出现非法操作
回复
lixiaosan 2004-08-02
这个说不准。。要看代码才知道
回复
successq 2004-08-02
这个是对数据的更新操作。
回复
bohut 2004-08-02
贴代码出来看看
回复
相关推荐
发帖
VC/MFC
创建于2007-09-28

1.5w+

社区成员

VC/MFC相关问题讨论
申请成为版主
帖子事件
创建了帖子
2004-08-02 12:07
社区公告

        VC/MFC社区版块或许是CSDN最“古老”的版块了,记忆之中,与CSDN的年龄几乎差不多。随着时间的推移,MFC技术渐渐的偏离了开发主流,若干年之后的今天,当我们面对着微软的这个经典之笔,内心充满着敬意,那些曾经的记忆,可以说代表着二十年前曾经的辉煌……
        向经典致敬,或许是老一代程序员内心里面难以释怀的感受。互联网大行其道的今天,我们期待着MFC技术能够恢复其曾经的辉煌,或许这个期待会永远成为一种“梦想”,或许一切皆有可能……
        我们希望这个版块可以很好的适配Web时代,期待更好的互联网技术能够使得MFC技术框架得以重现活力,……