社区
进程/线程/DLL
帖子详情
请教高人,在线程作为一个全局函数的情况下,线程里要对对话框进行UpdateData(false),怎么实现?
fuxf
2005-04-29 10:19:00
UINT ServerThread(LPVOID pParam)
{
CNewserverDlg *dlg=(CNewserverDlg*)AfxGetApp()->GetMainWnd();
dlg->UpdateData(false);//此句要出运行时错误,为什么?该怎么做?
....
return 0;
}
...全文
142
11
打赏
收藏
请教高人,在线程作为一个全局函数的情况下,线程里要对对话框进行UpdateData(false),怎么实现?
UINT ServerThread(LPVOID pParam) { CNewserverDlg *dlg=(CNewserverDlg*)AfxGetApp()->GetMainWnd(); dlg->UpdateData(false);//此句要出运行时错误,为什么?该怎么做? .... return 0; }
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
11 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
Fzergling
2005-04-30
打赏
举报
回复
自定义一个消息WM_UPDATEDATA
使用dlg->posemessage(WM_UPDATEDATA,0,0)通知对话框进行更新
fuxf
2005-04-30
打赏
举报
回复
请说具体一些
fuxf
2005-04-30
打赏
举报
回复
哦!
改成
dlg->PostMessage(WM_UPDATEDATA,0,0);
这下就对了,请解释一下行吗
fuxf
2005-04-30
打赏
举报
回复
在.h中定义:
const WM_UPDATEDATA=WM_USER+30;
//{{AFX_MSG(CNewserverDlg)
afx_msg void OnWMUpdateData();
//}}AFX_MSG
在.cpp中
BEGIN_MESSAGE_MAP(CNewserverDlg, CDialog)
//{{AFX_MSG_MAP(CNewserverDlg)
ON_MESSAGE(WM_UPDATEDATA,OnWMUpdateData)
//}}AFX_MSG_MAP
END_MESSAGE_MAP()
在线程中发消息
::PostMessage((HWND)pParam,WM_UPDATEDATA,0,0);
在.cpp中写消息映射函数,
void CNewserverDlg::OnWMUpdateData()
{
UpdateData(false);
}
没有编译错误,但是文本框没有被更新!请教!
高手快来解决吧
Darnshong
2005-04-30
打赏
举报
回复
还是用消息比较好,不问产生访问冲突。
在线程里发消息,要更新的窗口在接收到消息后自行更新!
我又回来了``
2005-04-30
打赏
举报
回复
我好象是多添一个函数绕过去的
呵呵
估计是最笨的办法吧
我也不清楚
在这个全局函数中好象操作界面就是回报错
dasiu
2005-04-30
打赏
举报
回复
也可以这样:
1)将 dlg的指针作为LVOID类型传给线程函数
2) 在线程函数中,通过 (CDialogA*)pVoid->访问对话框即可,可以通过UPDATEWINDOW()函数或消息,都可以实现。
绿色环保-菜青虫
2005-04-29
打赏
举报
回复
方法是笨了点,但目前测试了这么久还没发现出错。
绿色环保-菜青虫
2005-04-29
打赏
举报
回复
发送一个自定义消息给需要更新的窗口,该窗口接收到消息后自行更新。
fuxf
2005-04-29
打赏
举报
回复
能不能说具体一点,二位仁兄!?
huwei001982
2005-04-29
打赏
举报
回复
方法是笨了点,但目前测试了这么久还没发现出错
-------------------------------------------
这个方法并不笨, 而且是正确的方法, 注意发消息时用 PostMessage
另开了
一个
线程
,
线程
里
面
一个
函数
调用
Update
Data
(
false
),结果就出错,为什么?
如果把
一个
CWnd *P传递到另外
一个
线程
,在这个
线程
中CWnd的有些成员
函数
将不能使用,因为在MFC内部维护
一个
HWND和MFC对象间的映射,但这个映射 不能跨
线程
,所以在
一个
线程
中把
一个
CWnd *P传递到另外
一个
线程
,另外...
线程
进程
函数
调用
对话框
Update
data
错误
MFC对象不支持多
线程
操作。MSDN这样解释的: In a multi-threaded application
MFC
Update
Data
(
FALSE
)和
Update
Data
(TRUE)
当修改了变量的值,而希望
对话框
控件更新显示,就应该在修改变量后调用
Update
Data
(
FALSE
);如果你希望知道用户在
对话框
中到底输入了什么,也就是把控件的内容更新到变量就应该在访问变量前调用
Update
Data
(TRUE)。 ...
线程
中使用
Update
Data
出错解决方法
在使用Up
data
Data
(
false
)来
实现
时,总是报错,在网上搜了一下,才知道在工作
线程
中不能使用
Update
Data
来更新主
线程
中的数据。界面的东西,最好就是用主
线程
(界面
线程
)去执行相应的操作。要想在子
线程
(工作
线程
)
里
...
MFC中
Update
Data
函数
的使用
在MFC中经常需要用到edit control控件,通过该控件
进行
数据传递,特别是在
对话框
上,用户可以通过手动输入数据,将数据值传递给程序,特别是在一些软件算法需要设置参数的时候,很方便。 这时,经常需要用到的就是...
进程/线程/DLL
15,471
社区成员
49,182
社区内容
发帖
与我相关
我的任务
进程/线程/DLL
VC/MFC 进程/线程/DLL
复制链接
扫一扫
分享
社区描述
VC/MFC 进程/线程/DLL
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章