剪切板编程遇到的不能粘贴的问题

         今天调试代码的时候遇到了一个奇怪的问题,粘贴功能出异常了,无法进行粘帖操作了。于是查阅了相关的代码,才发现原因:使用OpenClipboard打开剪切板后,没有调用CloseClipboard把剪切板关闭掉。所以在做剪切板相关编程时,一定要注意在打开剪切板,执行操作后一定要将剪切板关闭掉。

// 是否是文件复制,如果是,则要执行发送文件的操作
BOOL32 CChatDlg::IsFilePasted()
{
	BOOL32 bFilePasted = FALSE;

	if( ::OpenClipboard( NULL ) ) // 打开剪切板
	{       
		HDROP hDrop = HDROP( ::GetClipboardData( CF_HDROP ) ); // 检测剪切板中复制的是否是文件或文件夹信息
        if( hDrop == NULL ) 
		{
			::CloseClipboard(); // 加上这句就可以了
			return FALSE;
		}

		// 通过检测剪切样式判断是否是在资源管理器中是否copy了待发送的文件,要与截图粘贴操作区分开来
		HANDLE hHandle = ::GetClipboardData( m_dwPreferredClipFormat );
		if ( hHandle != NULL )
		{
			bFilePasted = TRUE;
		}
		
		::CloseClipboard();
	}
	
	return bFilePasted;
}




评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

dvlinker

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

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

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

打赏作者

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

抵扣说明:

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

余额充值