装修公司 网站模板,长春市宽城区建设局网站,开发安卓app用什么语言,外贸流程中涉及的重要单证介绍 在windows开发过程中#xff0c;我们可能会需要对系统剪切板进行操作#xff0c;其中包括读取剪切板数据和将数据写入到剪切板中 设置剪切板内容
/*** brief 设置剪切板内容* param[in] pszData 指向缓冲区的指针* param[in] nDataLen 缓冲区长度* return 成功返回TRU…介绍 在windows开发过程中我们可能会需要对系统剪切板进行操作其中包括读取剪切板数据和将数据写入到剪切板中 设置剪切板内容
/*** brief 设置剪切板内容* param[in] pszData 指向缓冲区的指针* param[in] nDataLen 缓冲区长度* return 成功返回TRUE失败返回FALSE*/
static BOOL SetClipboard(const char* pszData, const int nDataLen)
{if (::OpenClipboard(NULL)){::EmptyClipboard();HGLOBAL hMem ::GlobalAlloc(GMEM_DDESHARE, nDataLen 1);if (hMem){char *buffer (char *)::GlobalLock(hMem);strcpy_s(buffer, nDataLen 1, pszData);::GlobalUnlock(hMem);::SetClipboardData(CF_TEXT, hMem);}::CloseClipboard();return TRUE;}return FALSE;
}
读取剪切板内容
/*** brief 读取剪切板内容* return 剪切板内容,失败为空*/
static CStringA GetClipboard()
{CStringA sText;if (::IsClipboardFormatAvailable(CF_TEXT) ::OpenClipboard(NULL)){HGLOBAL hMem ::GetClipboardData(CF_TEXT);if (hMem){LPSTR lpStr (LPSTR)::GlobalLock(hMem);if (lpStr){sText lpStr;::GlobalUnlock(hMem);}}::CloseClipboard();}return sText;
}将剪切板复制的图片保存为图片文件
static BOOL SaveClipboardToImageFile(LPCTSTR szFilePath, const SIZE sizeMin, const SIZE sizeMax)
{if (!OpenClipboard(NULL))return FALSE;HBITMAP hBitmap (HBITMAP)GetClipboardData(CF_BITMAP);CloseClipboard();if (hBitmap NULL)return FALSE;Gdiplus::Bitmap* gBitmap new Gdiplus::Bitmap(hBitmap, NULL);if(gBitmap NULL){return FALSE;}UINT nWidth gBitmap-GetWidth();UINT nHeight gBitmap-GetHeight();BOOL bResult FALSE;do {if (sizeMin.cx 0 sizeMin.cy 0) {if (nWidth sizeMin.cx || nHeight sizeMin.cy) {break;}}if (sizeMax.cx 0 sizeMax.cy 0){if (nWidth sizeMax.cx || nHeight sizeMax.cy) {break;}}bResult SaveImageFile(*gBitmap, szFilePath);} while (false);delete gBitmap;return bResult;
}复制图片到剪切板
static BOOL SaveImageFile(Gdiplus::Image image, LPCTSTR szPath, const WCHAR* format Limage/png)
{CLSID clsid;if (format NULL) {format Limage/png;}if (!GetEncoderClsid(format, clsid)) {return FALSE;}if (Gdiplus::Ok ! image.Save(szPath, clsid)) {return FALSE;}return TRUE;
}static BOOL GetEncoderClsid(const WCHAR* format, CLSID imageCLSID)
{UINT num 0; // number of image encodersUINT size 0; // size of the image encoder array in bytesGdiplus::ImageCodecInfo* pImageCodecInfo NULL;Gdiplus::GetImageEncodersSize(num, size);if (size 0)return FALSE; // FailurepImageCodecInfo (Gdiplus::ImageCodecInfo*)(malloc(size));if (pImageCodecInfo NULL)return FALSE; // FailureGdiplus::GetImageEncoders(num, size, pImageCodecInfo);for (UINT j 0; j num; j){if (wcscmp(pImageCodecInfo[j].MimeType, format) 0){imageCLSID pImageCodecInfo[j].Clsid;free(pImageCodecInfo);return TRUE; // Success}}free(pImageCodecInfo);return FALSE; // Failure
}