[问题] 如何在线程中调用 Dlg 中的 函数?

fireServer 2003-10-20 11:00:01
在 Dalog base 的 PROJECT 中,

在线程中如何才能调用 Dlg 中的控件和函数?
...全文
59 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
ljzcom 2003-10-20
  • 打赏
  • 举报
回复
flyelf(空谷清音) 说的是正确答案。
iNothing 2003-10-20
  • 打赏
  • 举报
回复
应该传窗口句柄this->hWnd
1、在线程里:
CDlg::FromHandle(hWnd);

2、要被调用的函数:
static
vcforever 2003-10-20
  • 打赏
  • 举报
回复
同意楼上的说法:启动线程的时候将对话框的指针传递给线程函数!
flyelf 2003-10-20
  • 打赏
  • 举报
回复
把dlg的指针作为线程的参数,即创建线程的时候如下:
AfxBeginThread(threadname, this);
zjlgigi 2003-10-20
  • 打赏
  • 举报
回复
喔,可以讲解一下原因吗 ???
clh 2003-10-20
  • 打赏
  • 举报
回复
不难, 只需要将该线程声明为对话框的友员函数就可以了。
在dlg的类体中声明:
inline UINT MyThread(LPVoid pParam);
zhumerchant 2003-10-20
  • 打赏
  • 举报
回复
我正好在编写这样的程序。有以下2点体会:
1。 不能传递句柄
调用pDlg = CDialog::FromHandle(hDlg)之后,pDlg并不等于
传递之前的this。 VC只是构造了一个新的dialog对象。所以用pDlg
作为指针访问成员变量或者成员函数,会得到意想不到的结果。

2。 原来线程的基于消息的函数,不能在新线程里边调用
每个线程都有一个消息队列。他们之间并无联系,互不干涉。
iNothing 2003-10-20
  • 打赏
  • 举报
回复
哦,是不是说AfxBeginThread会把handle映射到线程里去??

16,466

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC相关问题讨论
社区管理员
  • 基础类社区
  • Web++
  • encoderlee
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

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

试试用AI创作助手写篇文章吧