BCB中设置鼠标指针形状的问题

fucailee 2010-08-09 05:32:24
我想把鼠标指针设置为十字形状,有如下代码
HCURSOR hcursor = ::LoadCursor(Handle,IDC_CROSS);
::SetCursor(hcursor);
::SetCursorPos( ptScreen.x, ptScreen.y ); //设置指针的位置

为什么没有效果,鼠标指针形状没改变啊,这是怎么回事
...全文
377 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
jack54877012 2010-08-12
  • 打赏
  • 举报
回复
LoadCursor(NULL,IDC_CROSS);
fucailee 2010-08-12
  • 打赏
  • 举报
回复
...多谢大家了,我知道原因了
因为我有个WndProc的函数,里面有个针对SETCURSOR消息的回调函数,该函数总是把鼠标指针类型设置为默认箭头形,每次执行::SetCursor(Handle,IDC_CROSS);。。。。于是。。。。。
YeBinYe 2010-08-09
  • 打赏
  • 举报
回复

HCURSOR hcursor = ::LoadCursor(HInstance,IDC_CROSS);
ccrun.com 2010-08-09
  • 打赏
  • 举报
回复
SetCursor改变指针以后,需要强制刷新一下系统:
SHChangeNotify(SHCNE_ASSOCCHANGED, SHCNF_IDLIST + SHCNF_FLUSH, NULL, NULL);
SystemParametersInfo(SPI_SETCURSORS, 0, 0, 0); // 改变鼠标指针以后刷新


如果在C++Builder6中调用,需要注意以下头文件的包含顺序:
#define NO_WIN32_LEAN_AND_MEAN // 从 Windows 头中排除极少使用的资料
#include <shlobj.h>
#include <vcl.h>

以上三行放在单元文件最顶部。
ccrun.com 2010-08-09
  • 打赏
  • 举报
回复
SetCursor改变指针以后,需要强制刷新一下系统:
SHChangeNotify(SHCNE_ASSOCCHANGED, SHCNF_IDLIST + SHCNF_FLUSH, NULL, NULL);
SystemParametersInfo(SPI_SETCURSORS, 0, 0, 0); // 改变鼠标指针以后刷新


如果在C++Builder6中调用,需要注意以下头文件的包含顺序:
#define NO_WIN32_LEAN_AND_MEAN // 从 Windows 头中排除极少使用的资料
#include <shlobj.h>
#include <vcl.h>

以上三行放在单元文件最顶部。
lghndyz 2010-08-09
  • 打赏
  • 举报
回复
void __fastcall TForm1::Button1Click(TObject *Sender)
{
Form1->Cursor=crCross;
Button1->Cursor=crCross;
}
fucailee 2010-08-09
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 zhouzhangkui 的回复:]
HCURSOR hcursor = ::LoadCursor(Handle,IDC_CROSS);
检查你的hcursor 是否为空? 调用错了没
[/Quote]

没错是NULL,可这是为什么会是空
周药师 2010-08-09
  • 打赏
  • 举报
回复
HCURSOR hcursor = ::LoadCursor(Handle,IDC_CROSS);
检查你的hcursor 是否为空? 调用错了没
周药师 2010-08-09
  • 打赏
  • 举报
回复
::SetCursor(LoadCursor(Handle, IDC_CROSS));

1,222

社区成员

发帖
与我相关
我的任务
社区描述
C++ Builder Windows SDK/API
社区管理员
  • Windows SDK/API社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧