删除文章

确定要删除这篇文章吗?

取消
确定

windows 获取剪切板中的图片大小

     阅读(636)  2017-01-01 23:40:25

#pragma once

class cliboard_data
{
public:
    static bool getImageSize(int &width, int &height);
    static unsigned int getLastError();
};

#include "cliboard_data.h"
#include <stdint.h>
#include <Windows.h>

typedef struct
{
    uint32_t biSize;
    int32_t  biWidth;
    int32_t  biHeight;
    uint16_t biPlanes;
    uint16_t biBitCount;
    uint32_t biCompression;
    uint32_t biSizeImage;
    int32_t  biXPelsPerMeter;
    int32_t  biYPelsPerMeter;
    uint32_t biClrUsed;
    uint32_t biClrImportant;
} DIB;

bool cliboard_data::getImageSize(int &width, int &height)
{
    if (!(IsClipboardFormatAvailable(CF_BITMAP) || IsClipboardFormatAvailable(CF_DIB) || IsClipboardFormatAvailable(CF_DIBV5))) {
        return false;
    }

    bool result = false;
    if (OpenClipboard(NULL)) {
        HANDLE hClipboard = GetClipboardData(CF_DIB);
        if (!hClipboard) {
            hClipboard = GetClipboardData(CF_DIBV5);
        }

        if (hClipboard != NULL && hClipboard != INVALID_HANDLE_VALUE) {
            void* dib = GlobalLock(hClipboard);
            if (dib) {
                DIB *info = reinterpret_cast<DIB*>(dib);
                width = info->biWidth;
                height = info->biHeight;
                result = true;
                GlobalUnlock(dib);
            }
        }
        CloseClipboard();
    }

    return result;
}

unsigned int cliboard_data::getLastError()
{
    return GetLastError();
}

文章评论

Keep it simple,stupid
文章数
292
总访问量
355953
今日访问
160
最近评论

xuehaoyun : 很不错,来围观一下
tujiaw : 抱歉csdn code服务关闭了,这个代码我也找不到了
于淞 : 你好,这个文章的源码能分享一下吗,songsong9181@163.com,谢谢了 上面的写错了
于淞 : 你好,这个文章的源码能分享一下吗,838106303@163.com,谢谢了 上面的链接不能用了
tujiaw : 多谢多谢
essaypinglun college-paper.org : 很好的博客,赞赞
Folly : 这个实现有点奇怪,Qt为什么没有统一的比对方法。
过多s : alert("hello, world!")
tujiaw : 还不错哦
回到顶部