捕获鼠标光标图标c ++

时间:2012-07-10 14:28:19

标签: c++ visual-studio-2010 cursor mouse

我想用C ++获取鼠标图像。我使用了从中得到的代码 How to get mouse cursor icon VS c++问题。我使用了visual studio 2010 IDE。我创建了一个c ++ win32项目并将该代码片段输入到_tmain方法中,我还添加了缺少的结构(CURSORINFO和ICONINFO)。构建项目后,错误控制台显示

error C2664: 'GetCursorInfo' : cannot convert parameter 1 from 'CURSORINFO *' to 'PCURSORINFO'

这种构建错误的原因是什么。你可以解释吗?这是我建立的代码。

#include "stdafx.h"
#include <windows.h>

int _tmain(int argc, _TCHAR* argv[])
{
    typedef struct _ICONINFO {
        BOOL    fIcon;
        DWORD   xHotspot;
        DWORD   yHotspot;
        HBITMAP hbmMask;
        HBITMAP hbmColor;
    } ICONINFO, *PICONINFO;

    typedef struct {
        DWORD   cbSize;
        DWORD   flags;
        HCURSOR hCursor;
        POINT   ptScreenPos;
    } CURSORINFO, *PCURSORINFO, *LPCURSORINFO;


    HDC hdcScreen = GetDC(NULL);
    HDC hdcMem = CreateCompatibleDC(hdcScreen);

    CURSORINFO cursorInfo = { 0 };
    cursorInfo.cbSize = sizeof(cursorInfo);

    if (::GetCursorInfo(&cursorInfo))
    {
        ICONINFO ii = {0};
        GetIconInfo(cursorInfo.hCursor, &ii);
        DeleteObject(ii.hbmColor);
        DeleteObject(ii.hbmMask);
        ::DrawIcon(hdcMem, cursorInfo.ptScreenPos.x - ii.xHotspot, cursorInfo.ptScreenPos.y -          ii.yHotspot, cursorInfo.hCursor);
    }
    return 0;
}

1 个答案:

答案 0 :(得分:3)

不要重新定义在Windows SDK标头中声明的struct。这可能是导致错误的原因。

基本上添加:

#include <Windows.h> // includes WinUser.h

除非stdafx.h已经存在。如果是,请删除您自己的typedef