这是一个用mfc做的对话框程序 其中有一个按钮 点了之后开启一个线程

我把对话框句柄当参数传入然后通过这条代码得到这个对话框的指针CabcDlg*pDlg=(CabcDlg*)CabcDlg::FromHandle((HWND)param)... 我把对话框句柄当参数传入 然后通过这条代码得到这个对话框的指针CabcDlg *pDlg = (CabcDlg*)CabcDlg::FromHandle((HWND)param); 但是我发现用这个指针来用对话框的成员变量时 成员变量的值都不对 和之前赋的值都不一样了 怎么回事儿 展开
 我来答
百度网友6b69700
2011-12-19 · TA获得超过411个赞
知道小有建树答主
回答量:200
采纳率:0%
帮助的人:202万
展开全部
CabcDlg *pDlg = (CabcDlg*)AfxGetApp()->GetMainWnd();
追问
我不要窗口句柄 我想要的是指向对话框类的指针 从而可以用它的成员变量 你这个有半句返回的是句柄 左边却是个指针
追答
GetMainWnd返回的就是CWnd* 指针类型,可以直接强转为CabcDlg*指针类型,因为你这个对话框是程序的主窗口,所以可以这样获取。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
忘至白葬不情必0T
2011-12-19 · TA获得超过3万个赞
知道大有可为答主
回答量:1.1万
采纳率:90%
帮助的人:1.2亿
展开全部
会不会是param的值不对啊
更多追问追答
追问
这是那个按钮的响应函数里的语句
HWND hwnd = GetSafeHwnd();
AfxBeginThread(RProc,hwnd,THREAD_PRIORITY_NORMAL);
这是线程函数:
UINT RProc(LPVOID param)
这是线程函数中对参数param的使用来得到对话框指针
CabcDlg *pDlg = (CabcDlg*)CabcDlg::FromHandle((HWND)param);
我在调试时发现hwnd指向的地址里面全是问号 怎么回事儿
追答
AfxBeginThread的第二个参数是指针吧,能直接传句柄么?
要不改成
AfxBeginThread(RProc,&hwnd,THREAD_PRIORITY_NORMAL);

CabcDlg *pDlg = (CabcDlg*)CabcDlg::FromHandle((HWND)(*param));
试试
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 1条折叠回答
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式