当前位置: 首页 > 编程日记 > 正文

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


前言

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在头文件里面声明即可,再次断点发现数据正常。

三、测试代码下载

/Files/over140/2010/5/AfxThreadLesson.rar

结束语

问题比较隐蔽,因为之前就是使用指针方式调用,后来改成对象调用才出的问题,所以猜出来的,目前原理还不太明白。

相关文章:

学习Python,这22个包怎能不掌握?

作者 | Erik-Jan van Baaren译者 | 弯月,责编 | 屠敏头图 | CSDN 下载自东方 IC出品 | CSDN(ID:CSDNnews)以下为译文:如今全球各个行业内 Python 的使用状况怎么样呢?这个问题就是我写这篇文章的初衷。我找…

JSTL标签库的一些基础实例

如题所示&#xff0c;只是一些简单的入门实例&#xff0c;代码如下&#xff1a;<% page language"java" import"java.util.*" pageEncoding"UTF-8"%> <%taglib prefix"c" uri"http://java.sun.com/jsp/jstl/core"%…

旷视提Circle Loss,统一优化视角,革新深度特征学习范式 | CVPR 2020

作者 | 旷视研究院本文是旷视 CVPR 2020的被收录论文解读第。它提出用于深度特征学习的Circle Loss&#xff0c;从相似性对优化角度正式统一了两种基本学习范式&#xff08;分类学习和样本对学习&#xff09;下的损失函数。通过进一步泛化&#xff0c;Circle Loss 获得了更灵活…

收藏好玩的网站

1.输名字出照片 http://turnyournameintoaface.com/?name2.看google页面可以做成这样http://mrdoob.com/projects/chromeexperiments/google_gravity/3. 有趣的在线人脸变动物&#xff08;川剧中有变脸&#xff0c;其实你也可以滴&#xff01;&#xff09;http://youwild.org/…

GDB 格式化结构体输出

set print address set print address on 打开地址输出&#xff0c;当程序显示函数信息时&#xff0c;GDB会显出函数的参数地址。系统默认为打开的&#xff0c; show print address 查看当前地址显示选项是否打开。 set print array set print array on 打开数组显示&#xff…

Kinect For Windows V2开发日志九:侦测并绘制人体骨架

简介 在上一篇《侦测、追踪人体骨架》里&#xff0c;介绍了关节点的使用办法&#xff0c;这一篇记录将关节点与OpenCV结合的绘图方法。 代码 #include <iostream> #include <opencv2\imgproc.hpp> #include <opencv2\calib3d.hpp> #include <opencv2\high…

拨号连接或 ××× 连接的错误代码列表

本文列出了在使用Windows 2000、Windows XP 或 Windows Server 2003 作为客户机&#xff0c;建立拨号连接或 连接时可能收到的错误代码。注意&#xff1a;只有在尝试连接到正运行Windows 2000 或更高版本的路由和远程访问服务器时&#xff0c;才会看到编号高于 900 的错误代码…

“程序员数学不行,干啥都不行!”高级开发:90%都是瞎努力!

之前有很多读者留言向我们反馈&#xff1a;数学不好做算法优化&#xff0c;每次遇到不一样的问题就不会了&#xff0c;要是赶上面试基本就凉凉了。平时很难搞懂像数据结构、算法、复杂的语句等等&#xff0c;因为这些核心原理都是数学。而且光会基础数学远远不够&#xff0c;还…

Redis源码分析--lookupKey函数查看value值

lookupKey函数查看value值 robj *lookupKey(redisDb *db, robj *key) {dictEntry *de dictFind(db->dict,key->ptr);if (de) {robj *val dictGetVal(de);/* Update the access time for the ageing algorithm.* Dont do it if we have a saving child, as this will t…

PHP获取时间排除周六、周日的两个方法

//方法一&#xff1a; <?php $now time(); //指定日期用法 $now strtotime(2014-01-08) ; $day 3600*24; $total 12;$days array() ;for ($i2;$i<$total;$i) {$timer $now$day*$i;$num date("N",$timer)-2; //周一开始if($num>-1 and $num<3){if(c…

SMS2003 SP3+SQL Server2000 SP4部署(下)

<?xml:namespace prefix o />SMS2003 SP3SQL Server2000 SP4部署(下)<?xml:namespace prefix o ns "urn:schemas-microsoft-com:office:office" />E.SMS2003安装在berlin上放入SMS2003光盘镜像&#xff0c;选择SMS2003出现SMS2003安装向导&#xff…

redis源码分析--zslRandomLevel位运算解析

与&运算 0376的二进制就是1111 1110&#xff0c;二进制的与运算规则是&#xff0c;只有两个数同时为1时&#xff0c;则结果才为1&#xff0c;只要有一个数为0&#xff0c;则结果就为0。比如1&11; 1&00; 0&10; 0&00;因此把一个字符与二进制1111 1110进行与…

从零开始构建:使用CNN和TensorFlow进行人脸特征检测

作者 | Shubham Panchal译者 | 孟翔杰来源 | DeepHub IMBA出品 | AI科技大本营&#xff08;rgznai100&#xff09;人脸检测系统在当今世界中具有巨大的用途&#xff0c;这个系统要求安全性&#xff0c;可访问性和趣味性&#xff01;今天&#xff0c;我们将建立一个可以在脸上绘…

scope重定义

.directive(myAttr, function() {return {restrict: E,scope: {customerInfo: info},template: Name: {{customerInfo.name}} Address: {{customerInfo.address}}<br> Name: {{vojta.name}} Address: {{vojta.address}}}; }); directive中的几个属性&#xff1a; restric…

基于轮廓调整的SOTA实例分割方法,速度达32.3fps | CVPR 2020

作者 | VincentLee来源 | 晓飞的算法工程笔记介绍实例分割是许多计算机视觉任务中的重要手段&#xff0c;目前大多数的算法都采用在给定的bbox中进行pixel-wise分割的方法。受snake算法和Curve-GCN的启发&#xff0c;论文采用基于轮廓的逐步调整策略&#xff0c;提出了Deep sna…

Redis运行流程源码解析

原文作者&#xff1a;凡趣科技 pesiwang 原文地址&#xff1a;http://blog.nosqlfan.com/html/4007.html 本文分析源码基于 Redis 2.4.7 stable 版本。 概述 Redis通过定义一个 struct redisServer 类型的全局变量server 来保存服务器的相关信息&#xff08;比如&#xff1a…

2010年5月blog汇总:OpenExpressApp、其他

OpenExpressApp 信息系统开发平台OpenExpressApp &#xff0d; 框架待完善工作事项信息系统开发平台OpenExpressApp &#xff0d; 报表模块支持ReportObjectView信息系统开发平台OpenExpressApp &#xff0d; 从compositewpf到MEF信息系统开发平台OpenExpressApp &#xff0d; …

注意!Linux glibc再曝漏洞,可导致Linux软件劫持

2019独角兽企业重金招聘Python工程师标准>>> glibc是GNU发布的libc库&#xff0c;即c运行库。它是Linux系统中最底层的API&#xff0c;几乎其它运行库都会依赖于glibc。 近日&#xff0c;Google和Red Hat的安全人员发现GNU C Library (glibc)中存在严重的安全漏洞&a…

redis常用命令参考

操作Redis数据库 下面我们来简单的操作一下数据库。在实例开启的情况下&#xff1a; 1、插入数据 redis 127.0.0.1:6379> set name wwl   OK 设置一个key-value对。 2、查询数据 redis 127.0.0.1:6379> get name   "wwl" 取出key所对应的value。 3、删除键…

Script:收集UNDO诊断信息

以下脚本可以用于收集Automatic Undo Management的必要诊断信息&#xff0c;以sysdba身份运行: spool Undo_Diag.out ttitle off set pages 999 set lines 150 set verify off set termout off set trimout on set trimspool onREM REM ----------------------------------…

又要头秃?2020年七大AI编程语言大盘点

作者 | Claire D译者 | 苏本如&#xff0c;编辑 | 伍杏玲来源 | CSDN&#xff08;ID&#xff1a;CSDNnews&#xff09;人工智能已成为我们日常生活不可或缺的一部分&#xff0c;它被广泛地应用到几百种实际场景中&#xff0c;极大地便利人们的工作和生活。随着近年来的发展&…

I.MX6 bq27441 driver hacking

/************************************************************************** I.MX6 bq27441 driver hacking* 声明&#xff1a;* 本文主要是记录对电池计量芯片bq27441芯片驱动注册过程进行代码跟踪。** 2016-2-…

PHP5.5的一点变化

之前一直使用eAccelerator&#xff0c;参考&#xff1a;PHP安装eAccelerator 注意PHP5.5以后暂时不能使用eAccelerator 原因&#xff1a;其中一个我知道的是eAccelerator中使用了&#xff1a; php_register_info_logo(EACCELERATOR_VERSION_GUID, "text/plain", (un…

虚拟机的操作系统的安装

虚拟机的操作系统的安装启动虚拟机进入下一步&#xff0c;按Enter键开始安装。按F8许可协议选则C创建分区再按C&#xff0c;将未划分的分区划分按ENTER继续&#xff0c;选择NTFS文件系统格式化磁盘分区写上姓名和单位&#xff0c;单击下一步直接点击关闭<?xml:namespace pr…

2020,国产AI开源框架“亮剑”TensorFlow、PyTorch

「AI技术生态论」 人物访谈栏目是CSDN发起的百万人学AI倡议下的重要组成部分。通过对AI生态专家、创业者、行业KOL的访谈&#xff0c;反映其对于行业的思考、未来趋势的判断、技术的实践&#xff0c;以及成长的经历。 2020年&#xff0c;CSDN将对1000人物进行访谈&#xff0c;形…

Centos下部署Solr 搜索引擎

一、环境准备&#xff1a;系统环境&#xff1a;centos 6.5tomcat 7.0.47jdk-7u9solr-4.7.0首先将软件包上传到/tmp目录下1、 jdk安装[rootsvn-server /]# cd /tmp/ [rootsvn-server /]#tar zxvf jdk-7u9-linux-x64.tar.gz[rootsvn-server /]#mv jdk1.7.0_09 /u…

Redis源码分析-TCMalloc

redis很多地方都在调用zmalloc函数 zmalloc在这里定义zmalloc.c void *zmalloc(size_t size) {void *ptr malloc(sizePREFIX_SIZE);if (!ptr) zmalloc_oom_handler(size); #ifdef HAVE_MALLOC_SIZEupdate_zmalloc_stat_alloc(zmalloc_size(ptr));return ptr; #else*((size_t…

让AI训练AI,阿里和浙大的“AI训练师助手”是这样炼成的

不久前&#xff0c;人力资源社会保障部发布了一种炙手可热的新职业&#xff1a;AI训练师。没想到&#xff0c;浙江大学与阿里安全的人工智能训练师马上创造出一个 “AI训练师助手”&#xff0c;高效打造AI深度模型&#xff0c;应对海量应用场景的增加&#xff0c;让AI训练模型面…

用 Navicat for Oracle 管理 Oracle10g/11g 数据库

Navicat for xxx 是一个优秀的数据库管理客户端&#xff0c;有 MySQL、Oracle 等版本。建议大家最好用 Enterprise 版本&#xff0c;功能全面一些&#xff0c;但较之于免费的 Lite 版&#xff0c;企业版可是要花银子买的。 安装 Navicat for Oracle 后&#xff0c;首先需要建一…

借一个同事的经历,谈一谈程序员的成长

一个很久之前的同事&#xff0c;今天找我&#xff0c;想让我帮他推荐下&#xff0c;去我们公司来工作&#xff0c;因为认识很久&#xff0c;就和他说了说公司的现状&#xff0c;也询问了一下他的状况&#xff0c;寒暄几句&#xff0c;让他下周等面试。 这位同事是之前一起做游戏…