CWnd类临时对象会在主线程OnIdle时被DeleteTempMap函数清除掉。

从报错到定位:Memtest86 DQ位算法解析与实践指南 本文深入解析了Memtest86内存测试工具报错信息的解读方法,重点介绍了通过地址解析、数据转换、位比对和DQ定位四步算法,精准锁定故障DQ位的实践流程。文章以DDR4和DDR5为例,详细拆解了从十六进制报错到二进制比对的完整步骤,并提供了从单个报错分析到故障模式诊断的进阶指南,帮助用户将抽象的报错信息转化为具体的维修或排查依据。 阅读详情
CWnd类临时对象会在主线程OnIdle时被DeleteTempMap函数清除掉。 

 为什么我使用Sleep函数后改变了我的CWnd指针对象的m_pCtrlSite的值
悬赏分:30 - 提问时间2008-4-30 15:22 问题为何被关闭
我想使用线程控制我的按钮的摆动,可是当我使用sleep函数后,我的CWnd *pWnd的m_pCtrlSize值被改变,使得程序无法继续,请问该如何解决
部分代码如下:UINT ButtonFlutterThread(LPVOID pParam)
{
FLT_THREAD *pStruct =static_cast<FLT_THREAD *>(pParam);
CWnd *pWnd;
CRect rectMain,rectButton1,rectButton2,rectButton3,rectButton;
int offset=3;

pStruct->pViewWnd->GetWindowRect(rectMain);
pStruct->pWnd1->GetWindowRect(rectButton1);
pStruct->pWnd2->GetWindowRect(rectButton2);
pStruct->pWnd3->GetWindowRect(rectButton3);
while(WaitForSingleObject(pStruct->hEvent,0)==WAIT_TIMEOUT)
{
switch(*pStruct->pnThreadType)
{
case SHIJUANXINXI:
rectButton.left=rectButton1.left-rectMain.left;
rectButton.top=rectButton1.top-rectMain.top;
rectButton.right=rectButton1.right-rectMain.left;
rectButton.bottom=rectButton1.bottom-rectMain.top;
pWnd=pStruct->pWnd1;
break;
case JIANKAOXINXI:
rectButton.left=rectButton2.left-rectMain.left;
rectButton.top=rectButton2.top-rectMain.top;
rectButton.right=rectButton2.right-rectMain.left;
rectButton.bottom=rectButton2.bottom-rectMain.top;
pWnd=pStruct->pWnd2;
break;
case KAOCHANGANPAI:
rectButton.left=rectButton3.left-rectMain.left;
rectButton.top=rectButton3.top-rectMain.top;
rectButton.right=rectButton3.right-rectMain.left;
rectButton.bottom=rectButton3.bottom-rectMain.top;
pWnd=pStruct->pWnd3;
break;
default:
break;
}
pWnd->MoveWindow(rectButton.left-offset,rectButton.top+offset
,rectButton.Width(),rectButton.Height());
Sleep(200);

pWnd->MoveWindow(rectButton.left,rectButton.top,rectButton.Width()
,rectButton.Height());
Sleep(200);

pWnd->MoveWindow(rectButton.left+offset,rectButton.top+offset
,rectButton.Width(),rectButton.Height());
Sleep(200);

pWnd->MoveWindow(rectButton.left,rectButton.top,rectButton.Width()
,rectButton.Height());
Sleep(1000);
}
return true;
}

void CMyView::ButtonThreadInit(void)
{
m_pStruct->pViewWnd=(CWnd *)this;
m_pStruct->pWnd1=GetDlgItem(IDC_BUTTON_SHIJUAN);
m_pStruct->pWnd2=GetDlgItem(IDC_BUTTON_JIANKAO);
m_pStruct->pWnd3=GetDlgItem(IDC_BUTTON_KAOCHANG);
m_pStruct->hEvent=m_hEventFlutter;

m_wtFlutter=AfxBeginThread(ButtonFlutterThread,m_pStruct,THREAD_PRIORITY_ABOVE_NORMAL);
}
问题补充:可是这个方法在我的另外一个程序中用的好好的,在这两个程序中,这个线程都是单独的模块,没有和其他的东西发生联系的.
提问者: a40520 - 试用期 一级
答复     1
问题出在GetDlgItem,
这个函数返回的CWnd*是用CWnd::FromHandle产生的,
如果返回的窗口不是CWnd类或其派生类的对象,
这个操作会返回一个临时对象,
而这个临时对象会在主线程OnIdle时被DeleteTempMap函数清除掉。
如果一定要这么用,可以为每个控件创建一个对象,就不会有问题了。
Win32 GDI 学习总结 Windows GDI 教程(一) 一个简单的绘图程序 http://www.tuicool.com/articles/jeMBZ3v 常见的图形编程库,除了 GDI 外还有 GDI+、OpenGL、DirectX等等,GDI 是其中最基础的一个库。所以 GDI 注定了不会有高级应用,有兴趣的就当刷低级怪吧。 在教程的最开始,需要简单的说明一些前置条件。 开发环境与 阅读详情

相关推荐

1.2 amdgpu_bo的设计分析 — gem层和ttm层

本文分析了AMD KFD的BO设计架构,重点介绍了DRM子系统中缓冲对象的多层继承关系。文章首先展示了核心继承层次图,包括DRM通用层(drm_gem_object)、TTM内存管理层(ttm_buffer_object)、AMD驱动层(amdgpu_bo)和KFD计算层(kgd_mem)。随后详细解析了drm_gem_object结构体的关键功能,包括用户空间接口管理、内存映射支持、引用计数机制以及DMA-BUF导入/导出功能。

图形/计算GPU的驱动与虚拟化技术分享园地 2407

[学习笔记]MFC 中的CDC

[学习笔记]MFC 中的CDC CDC定义的是设备上下文对象。 CDC对象提供处理显示器或打印机等设备上下文的成员函数,以及处理与窗口客户区对应的显示上下文的成员。 通过CDC对象的成员函数进行所有的绘图。 对设备上下文操作提供了成员函数,处理绘图工具。安全型图形设备接口(GDI)对象收集,以及处理颜色和调色板。 它还为获取和设置绘图属性、映射,处理视点、窗口扩展、转换

congzhao27的专栏 2314

【RT-DETR改进涨点】ResNet18、34、50、101等多个版本移植到ultralytics仓库(RT-DETR官方一比一移植)

本文是本专栏的第一篇改进,我将RT-DETR官方版本中的ResNet18、ResNet34、ResNet50、ResNet101移植到ultralytics仓库,网上很多改进机制是将基础版本的也就是2015年发布的ResNet移植到ultralytics仓库中,但是其实RT-DETR实验的ResNet和其是有很大区别的在其中有很多细节上的不同(文章中我也会列出举例)

Snu77的博客 7137

Windows对象、句柄与MFC对象

      Windows对象是以句柄来标识的,对应的MFC就是这些句柄的C++包装。内存中的Windows对象一定有唯一的句柄来标识,但不一定有对应的MFC对象在内存中。当需要获取Windows对象的对应MFC对象而内存中又没有此对象,系统会创建一个临时MFC对象返回给用户,并在之后某个空闲刻进行回收。   Windows对象句柄及其对应的MFC如下表所示:

悠游coding 2229

c++中CDC探究

CDC 继承层次: CObject   └CDC  定义: CDC定义的是设备上下文对象。 CDC对象提供处理显示器或打印机等设备上下文的成员函数,以及处理与窗口客户区对应的显示上下文的成员。 通过CDC对象的成员函数进行所有的绘图。 对设备上下文操作提供了成员函数,处理绘图工具。安全型图形设备接口(GDI)对象收集,以及处理颜色和调色板。 它还为获取和设置绘图属性、映射

ghevinn欢迎您光临 1万+

Windows GDI:CGdiObject使用总结

一、Win32下的GdiObject操作1、获取系统自带的GdiObjectHGDIOBJ GetStockObject(int fnObject) fnObject: BLACK_BRUSH — Black brush. HOLLOW_BRUSH — Hollow brush (equivalent to NULL_BRUSH). BLACK_PEN — Black pen. …… N

Hisin Wang的专栏 1945

CDC详细说明

CDCCObject └CDCCDC定义的是设备上下文对象。CDC对象提供处理显示器或打印机等设备上下文的成员函数,以及处理与窗口客户区对应的显示上下文的成员。通过CDC对象的成员函数进行所有的绘图。对设备上下文操作提供了成员函数,处理绘图工具。安全型图形设备接口(G

无幻 3万+

Windows GDI:CDC使用总结

一、DC函数的配对使用GetDC — ReleaseDC GetWindowDC — ReleaseDC CreateDC — DeleteDC二、GetDC与GetWindowDC1、HDC GetDC(HWND hWnd) int ReleaseDC(HWND hWnd, HDC hDC);2、HDC GetWindowDC(HWND hWnd); int ReleaseDC(HWND

Hisin Wang的专栏 3307

map循环遍历删除

map的循环删除元素

loveheronly的专栏 6687

Map的5种遍历方法

循环遍历map的方法

ThatsThePrice的博客 1613

c++ 中 map集合的基本使用方法 添加、删除、修改、清空、遍历

c++ 中 map集合的基本使用方法 添加、删除、修改、清空、遍历,在C++语言中,我们经常使用到map集合来存储 key-value 型的数据。这里将常用到的map集合操作方法整理出来。

qq_43838261的博客 7324

线程访问窗口资源的问题

在开个线程常为所开的线程传入个窗口参数 (cwnd),,,这里里面有个很大的隐患就是当做CWnd::AssertValid()检查,就会遇到断言失败。具体原因在于MFC管理窗口的机制。MFC有个窗口句柄和窗口对象的映射表,就是Windows对象(句柄)和C++对象的一个映射,它是在窗口调用CWnd::Create(),CWnd::CreateEx(),就添加到映射表里的。映射表的一个重要

WhyGoSoFar的专栏 6228

WINCE-MFC-CDC使用出现的4KB内存泄露解决办法,坑爹的MFC

今天调试一个程序,为了偷懒想直接用以前的MFC的程序,顺手开了自己的内存监控软件,结果发现果然MFC存在一个BUG,其实也不算是BUG,只是没有在正常的使用中注意到特殊的用法 MFC的CDC一直会有4KB的内存泄露 HDC hdc = ::GetDC(m_hWnd); CDC* pDC=CDC::FromHandle(hdc);//把这句注释,现象没有再重现    // ........

WINC开发的专栏 4253

句柄映射机制的实现

mfc里实现句柄映射借助了两个:句柄映射辅助,模块--线程状态 1.句柄映射辅助:class CHandleMap{private:    // implementation CFixedAllocNoSync m_alloc; void (PASCAL* m_pfnConstructObject)(CObject* pObject); void (PASCAL* m_pfnD

FlowShell的专栏 2781

CHandleMap::RemoveHandle(HANDLE h) 内断言报错

#ifdef _DEBUGvoid CHandleMap::RemoveHandle(HANDLE h) { // make sure the handle entry is consistent before deleting CObject* pTemp = LookupTemporary(h); if (pTemp != NULL) { // temporary objects

z331719654的专栏 1539

基于树莓派的四驱智能小车源码+项目说明(黑线循迹、超声波避障、红外遥控、网络遥控遥感、磁轨控制等功能).zip

【资源说明】1、该资源包括项目的全部源码,下载可以直接使用!2、本项目适合作为计算机、数学、电子信息等专业的课程设计、期末大作业和毕设项目,作为参考资料学习借鉴。3、本资源作为“参考资料”如果需要实现其他功能,需要能看懂代码,并且热爱钻研,自行调试。基于树莓派的四驱智能小车源码+项目说明(低压直流电池组供电,安装多种传感器系统,实现黑线循迹、超声波避障、红外遥控、网络遥控遥感、磁轨控制、计算机视觉红绿灯识别 等功能).zip

libstdc++-4.8.5-16.el7.i686.rpm

libstdc++-4.8.5-16.el7.i686.rpm

上一篇: My Toy Lua Debugger
下一篇: 在Windows桌面创建快捷方式
skyremember
博客等级 码龄20年 203粉丝 484原创
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值