» 您尚未登录:请 登录 | 注册 | 标签 | 帮助 | 小黑屋 |


发新话题
打印

[其他] TG的程序员进。。。问一个有关UI多线程获取对话框指针的问题。。。。

简单的说

在 对话框A(对应类A) 上有一个 按钮1 ,按一下就弹出来一个 对话框B ,这个 对话框B(对应类B) 是UI多线程做的。

现在想实现的功能是,在 对话框B 里,显示 对话框A(类A) 里一个 变量x 的值。

我想的方法是,在 对话框B 里获得 类A 的指针,但是不知道如何操作。。。

网上搜了半天看的一头雾水,求多快好省的方法

激骚伺候!!

再追加一个问题,就是如何在 对话框A 里获得 对话框B 的指针??

[ 本帖最后由 shixn 于 2013-6-30 00:40 编辑 ]


TOP

引用:
原帖由 lijgame 于 2013-6-30 00:16 发表
posted by wap, platform: Chrome

什么os什么framework都没说。。。
如果是Windows下的话A创建B的时候保存句柄,然后变量值改变的时候把新的值以发消息的方式传递给B。
SendMessage是最简单的线程安全的消息机制了 ...
最基础的
win vc6

SendMessage里也需要 对话框B 的指针作为参数传递啊。。。



TOP

引用:
原帖由 seek 于 2013-6-30 00:31 发表
A如果析构就杯具了~

多线程通信还是通过消息队列最可靠
A是主线程,肯定不会析构


TOP

引用:
原帖由 seek 于 2013-6-30 00:41 发表
仅仅是要获得指针的话,楼主听说过全局变量么?

当然全局变量都是尽量避免使用的,最好有一个manager,在创建B的时候,把A的指针注册进去,在A销毁的时候,再通知B把指针赋空。上面两个操作都要对指针加锁。
全局变量知道,加锁不太懂。。。

TOP

引用:
原帖由 SONIC3D 于 2013-6-30 00:45 发表
你的设计思路不对,应该B获得A告诉它的A上的变量,甚至更好一点是应该数据和视图分离。

方案一:A告知B,B使用:
-B窗口为平台窗口类的派生类ClassWndB,构造函数接受一个参数,用来初始化ClassWndB的成员变量mV ...
这个思路我也想过,所以就产生了追加问题。。

“在A窗口对应的类实现中的按钮事件方法中,以A窗口的变量x值去构造ClassWndB的一个实例”

这个具体如何实现啊。。。

按钮1 的函数是:
void CUIDlg::OnButton1()
{
        // TODO: Add your control notification handler code here
        CWinThread *pThread=AfxBeginThread(RUNTIME_CLASS(CDlgB));
}
如何把X值传递给CDlgB?

方案二有点似懂非懂的感觉,俺再研究研究。。

[ 本帖最后由 shixn 于 2013-6-30 00:56 编辑 ]

TOP

引用:
原帖由 SONIC3D 于 2013-6-30 01:12 发表

我操,MFC什么的最让我感觉青春黑暗无比了。。。。
你这样用线程的话,我建议还是认认真真思考第二种方案。
如果一定要用第一种方案,那么AfxBeginThread是有第二个参数的,请自己看MSDN,但明确说这样用从结构角 ...
AfxBeginThread函数有2种形式,工作者线程是有第二个参数的,UI多线程木有,所以比较伤脑筋……
CWinThread* AfxBeginThread(
   AFX_THREADPROC pfnThreadProc,
   LPVOID pParam,
   int nPriority = THREAD_PRIORITY_NORMAL,
   UINT nStackSize = 0,
   DWORD dwCreateFlags = 0,
   LPSECURITY_ATTRIBUTES lpSecurityAttrs = NULL
);
CWinThread* AfxBeginThread(
   CRuntimeClass* pThreadClass,
   int nPriority = THREAD_PRIORITY_NORMAL,
   UINT nStackSize = 0,
   DWORD dwCreateFlags = 0,
   LPSECURITY_ATTRIBUTES lpSecurityAttrs = NULL
);

现在确实就是为了完成任务,不然这周末大半夜的。。。。

实在不行就全局变量先凑合着。。。。

书名记下了,非常感谢,今天激骚没了,改天一定补上!!

TOP

发新话题
     
官方公众号及微博