作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我有一个 MFC 应用程序可以在剪贴板中查找文件,它在复制文件时工作正常但在剪切和粘贴操作期间失败。当我实时调试时,它显示 GetClipboardData(CF_HDROP) 失败并返回错误号 1418。这是我的代码
TCHAR lpszFileName[MAX_PATH];
bool bStart = true;
CString csFile ="",
strErr = "";
bool bOpen = OpenClipboard(0);
if(!bOpen)
{
strErr.Format("clipboard Error %d",GetLastError());
WriteLog(TYPECAST_T0_LPTSTR strErr,1,1);
}
HGLOBAL hGlobal = (HGLOBAL)GetClipboardData(CF_HDROP);
if (hGlobal)
{
HDROP hDrop = (HDROP)GlobalLock(hGlobal);
if (hDrop)
{
UINT fileCount = DragQueryFile(hDrop, 0xFFFFFFFF, 0, 0);
UINT filenameLength;
for (UINT i = 0; i < fileCount; ++i)
{
filenameLength = DragQueryFile(hDrop, i, 0, 0);
DragQueryFile(hDrop, i, lpszFileName, filenameLength+1);
csFile = (CString)lpszFileName;
AddFileList(csFile);
}
}
}
else
{
strErr.Format("clipboard Error %d",GetLastError());
WriteLog(TYPECAST_T0_LPTSTR strErr,1,1);
}
CloseClipboard();
GlobalUnlock(hGlobal);
如果有人知道如何解决这个问题,请分享
最佳答案
错误 1418 是 ERROR_CLIPBOARD_NOT_OPEN
。我认为这是因为您忘记了没有正确关闭剪贴板。 GlobalUnlock(hGlobal);
应该驻留在 if (hDrop)
block 内,并在 关闭剪贴板之前被调用。此外 OpenClipboard
返回 BOOL
,而不是 bool
并且 CloseClipboard
返回的 BOOL
值应该接受检查。
关于c++ - GetClipboardData(CF_HDROP) 剪切和粘贴失败,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45347710/
是否有可能实现 CF_HDROP从浏览器拖放到另一个程序?我希望使用 JavaScript 网站作为一种方式来为另一个程序在本地服务器上组织、搜索和服务器内容目录。 虽然我找到了一种从浏览器拖放到桌面
我有一个 MFC 应用程序可以在剪贴板中查找文件,它在复制文件时工作正常但在剪切和粘贴操作期间失败。当我实时调试时,它显示 GetClipboardData(CF_HDROP) 失败并返回错误号 14
我是一名优秀的程序员,十分优秀!