C++ 通过DestroyWindow或SendMessage关闭视窗时候出现问题

本文档详细记录了在C++程序中遇到的两种窗口关闭问题:一是主线程使用`DestroyWindow`无法关闭子视窗,二是使用`SendMessage`关闭多个视窗时出现异常中断。问题主要由线程权限不足和消息阻塞引起。解决方案包括将窗口对象创建移到主线程,以及使用`PostMessage`代替`SendMessage`避免消息阻塞。
摘要由CSDN通过智能技术生成


问题概览

近期在完成一个连接多台相机,并实时显示每一个相机窗口的程序过程中,在程序的最后会涉及对显示窗口的关闭。但是期间尝试采用DestroyWindowSendMessage来关闭时都出现了无法关闭或异常中断的问题。详细问题如下

  1. 在主线程中使用DestroyWindow无法关闭生成的子视窗,返回值为false;
  2. 在主线程中使用SendMessage(g_hwnd[i], WM_CLOSE, 0, 0)依次关闭多个视窗时,异常中断。

一.DestroyWindow无法关闭视窗问题

1.问题现象

在主线程中使用DestroyWindow(hwnd)时无法关闭销毁视窗,该函数返回值为false

bool flag = DestroyWindow(g_hwnd[0]);

在这里插入图片描述

2.排查思路

由于该函数并不会返回报错码,故采用GetLastError()来查看实际的错误原因。将上述代码修改为如下后,再通过断点调试查到的错误码即可获取实际的错误原因。

bool flag 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

ViolentElder

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值