Сбой GetObject для текстового курсора - PullRequest
1 голос
/ 13 марта 2011

Я пытаюсь получить растровое изображение курсора, чтобы вычислить моментальный снимок с помощью курсора мыши.

Он работает нормально со стандартным курсором (т.е. стрелка), но не работает, как только курсорстановится текстовым курсором.В основном я делаю это:

//Fetching the cursor handle
GetCursorInfo( &m_infos );
m_handle = m.infos.hCursor;
//Fetching cursor info
ICONINFO    infos;
HICON   icon = CopyCursor( m_handle );
GetIconInfo( icon, &infos );
BITMAP  bitInfos;
if ( GetObject( infos.hbmColor, sizeof( bitInfos ), &bitInfos ) == 0 )
{
    qDebug() << "Error N:" << GetLastError();
}

Проблема в том, что GetObject () И GetLastError () возвращают 0 ... так что я не в состоянии узнать, в чем именно ошибка ...

Я запускаю этот код на Win7, используя QtCreator и MingW.

Любая идея, подсказка, будет высоко оценена !!Большое спасибо заранее!

Ответы [ 2 ]

0 голосов
/ 13 марта 2011

infos.hbmColor, вероятно, NULL. MSDN говорит: ICONINFO.hbmColor:

Дескриптор растрового изображения цвета значка. Этот элемент может быть необязательным, если эта структура определяет черно-белый значок.

Обычно текстовый курсор (IDC_IBEAM) определяется с использованием только инверсии цвета и прозрачности, объясняя тот факт, что hbmColor - это NULL. Вы должны всегда применять hbmMask к необязательному hbmColor.

0 голосов
/ 13 марта 2011

Нет «текстового курсора». Он называется кареткой, и с ним обращаются совершенно иначе, чем указатель мыши. См. Использование кареток на MSDN для получения дополнительной информации.

...