EndDialog引起的内存问题

 

一、应用背景

有一个函数A运行时会弹出窗口,窗口中有确定按钮与取消按钮。

启动一线程运行A,根据返回的线程句柄,枚举线程句柄拥有的窗口,然后把窗口EndDialog掉:

BOOL CALLBACK CXRedGinaApp::EnumWinCloseWinProc(HWND hwnd, LPARAM lParam)   
{     
	L_DEBUG(L"The thread has winodw, hwnd = 0x%x\n", hwnd); 
	if (TRUE == EndDialog(hwnd, IDOK))
	{
		L_DEBUG(L"EndDialog, success\n");
	}
	else
	{
		L_ERROR(L"EndDialog, failed\n");
	}
	return  TRUE;   
}   
二、出错

表面看不出有内存出错,但在windbg.exe中报以下错误:

 

三、解决方法

结束窗口改为:TRUE == EndDialog(hwnd, IDCANCEL

BOOL CALLBACK CXRedGinaApp::EnumWinCloseWinProc(HWND hwnd, LPARAM lParam)   
{     
	L_DEBUG(L"The thread has winodw, hwnd = 0x%x\n", hwnd); 
	if (TRUE == EndDialog(hwnd, IDCANCEL))
	{
		L_DEBUG(L"EndDialog, success\n");
	}
	else
	{
		L_ERROR(L"EndDialog, failed\n");
	}
	return  TRUE;   
}   


 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值