VC驿站

 找回密码
 加入驿站

QQ登录

只需一步,快速开始

搜索
查看: 4308|回复: 55

[原创] MFC多线程传参问题 [AfxBeginThread]

  [复制链接]
79_avatar_middle
在线会员 发表于 2016-1-20 11:09:13 | 显示全部楼层 |阅读模式

MFC中使用多线程比较简单,大家都推荐用AfxBeginThread来实现,但使用过程中确遇到传入this之后不能得到对象内部字段数据的问题。


代码

    1.1  Test.h


#pragma once

class CTest
{
public:
    CTest(void);
    ~CTest(void);

    void ThreadMethod(HWND hWnd);

    HWND m_hWnd;
};

    1.2  Test.cpp


#include "StdAfx.h"
#include "Test.h"

CTest::CTest(void)
{
}

CTest::~CTest(void)
{

}

UINT ThreadProc(LPVOID lpParam)
{
    CTest* test = (CTest*)lpParam;
    HWND hWnd = test->m_hWnd;
    return 0;
}

void CTest::ThreadMethod(HWND hWnd)
{
    this->m_hWnd = hWnd;
    AfxBeginThread(ThreadProc,this);
}


    1.3  MFC主窗体方法调用

    CTest test;
    test.ThreadMethod(m_hWnd);    1.4  调试和说明

      将断点打到ThreadProc方法的“HWND hWnd = test->m_hWnd;”,执行发现是空的,而在CTest::ThreadMethod处明明赋值了!实际中还发现变量类型是int可以传递,CString传之后就是乱码或非原始数据了。



  二、解决办法


    将test声明为一个指针,通过指针来调用方法,如下:

    test = new CTest();
    test->ThreadMethod(m_hWnd);    test在头文件里面声明即可,再次断点发现数据正常。

评分

参与人数 4驿站币 +6 热心值 +6 收起 理由
28_avatar_small 天下 + 1 + 1 感谢分享!
65_avatar_small 编程者 + 2 + 2 很给力!
16_avatar_small 阳光 + 1 + 1 支持原创!
88_avatar_small 寂寞江湖 + 2 + 2 再接再厉啊 给点辛苦费吧

查看全部评分





上一篇:爱思助手招QT/C++软件工程师
下一篇:[C++]遍历可变参数 (va_list)
02_avatar_middle
在线会员 发表于 2016-1-20 16:45:22 | 显示全部楼层
看一下,学习一下
88_avatar_middle
online_vip 发表于 2016-1-20 17:57:33 | 显示全部楼层
看看你发的帖子
06_avatar_middle
在线会员 发表于 2016-1-21 10:27:08 | 显示全部楼层
看一下,学习一下
07_avatar_middle
在线会员 发表于 2016-1-21 17:39:41 | 显示全部楼层
MFC多线程传参问题 [AfxBeginThread]
08_avatar_middle
在线会员 发表于 2016-1-21 17:56:42 | 显示全部楼层
MFC多线程传参问题 [AfxBeginThread]
26_avatar_middle
在线会员 发表于 2016-1-22 12:35:29 | 显示全部楼层
顶楼主啦..希望楼主多发精品好帖啦.....
92_avatar_middle
online_vip 发表于 2016-1-22 13:48:11 | 显示全部楼层
它什么时候释放呢?
32_avatar_middle
online_vip 发表于 2016-2-1 15:04:00 来自手机 | 显示全部楼层
学习一下
24_avatar_middle
在线会员 发表于 2016-2-2 10:48:36 | 显示全部楼层
来看看心得
45_avatar_middle
online_vip 发表于 2016-2-2 10:58:00 | 显示全部楼层
看看支持
83_avatar_middle
在线会员 发表于 2016-2-4 11:17:09 | 显示全部楼层
看下吧!!!!!!!!!!!
73_avatar_middle
在线会员 发表于 2016-2-4 14:10:50 | 显示全部楼层
看看 学习学习
26_avatar_middle
在线会员 发表于 2016-2-4 14:39:07 | 显示全部楼层
MFC多线程传参问题 [AfxBeginThread]
16_avatar_middle
在线会员 发表于 2016-2-6 13:33:03 | 显示全部楼层
C多线程传参
72_avatar_middle
在线会员 发表于 2016-2-6 14:32:05 | 显示全部楼层
看看什么情况
49_avatar_middle
online_vip 发表于 2016-2-19 14:13:15 | 显示全部楼层
看看都是些什么东西
52_avatar_middle
在线会员 发表于 2016-2-19 15:58:10 | 显示全部楼层
学习学习
52_avatar_middle
在线会员 发表于 2016-2-20 15:30:19 来自手机 | 显示全部楼层
谢谢分享
34_avatar_middle
在线会员 发表于 2016-2-20 21:28:35 | 显示全部楼层
好东西,支持楼主
您需要登录后才可以回帖 登录 | 加入驿站 qq_login

本版积分规则

关闭

站长提醒上一条 /2 下一条

QQ|小黑屋|手机版|VC驿站 ( 辽ICP备09019393号tongdun|网站地图wx_jqr

GMT+8, 2019-3-21 02:46

Powered by Discuz! X3.4

© 2009-2019 cctry.com

快速回复 返回顶部 返回列表