这是C / C ++代码,用于检测光标图标何时发生变化,并将光标当前图像的指针值传递给printf。
#include <windows.h>
#include <stdio.h>
void CursorIcon()
{
CURSORINFO ci = { sizeof(ci) };
GetCursorInfo(&ci);
printf("handle = %p\n", ci.hCursor);
}
int main(){
CursorIcon();
}
例如:当光标使用默认箭头图像时,printf表示指针值为“0000000000010005”。
问题
找到上述值后,我希望在 cursorIcon() 中 printf 之后的if语句中使用它功能详述如下
if(ci.hCursor=="0000000000010005"){
printf("This is an arrow mouse icon!");
但是,我给出了这个错误“ 不同指针类型之间的比较'HCURSOR {aka HICON __ }'和'const char *'缺少一个强制转换[-fpermissive] “
尝试解决方案
#include <iostream>
):我尝试了if(ci.hCursor==(HCURSOR)0000000000010005)
和if(ci.hCursor==static_cast<HCURSOR>0000000000010005)
现在,我在这里遇到了一个小小的头痛,并且对于解决这个问题的地方有点困惑。
答案 0 :(得分:0)
%p打印的数字格式是特定于实现的。 Microsoft实现打印0填充hexadecimal number。如果要在代码中使用它,则必须在其前面添加0x并添加强制转换。对于0000000000010005,您将使用if (cursorhandle == (HCURSOR) 0x010005) ...
。
正如评论中指出的那样,硬编码这个数字并不是正确的方法,因为标准的光标句柄值没有记录为稳定。您应该通过调用LoadCursor
来获取光标句柄:
HCURSOR hArrow = LoadCursor(NULL, IDC_ARROW);
if (ci.hCursor == hArrow) printf("This is the standard arrow cursor\n");