如何在BCB界面上不同控件上加载不同的自定义鼠标样式?
VC中有OnSetCursor的消息响应,里面可以设置不同的控件ID的鼠标样式。
BCB中我也设置了消息响应,但不知道消息中如何区分不同控件句柄,有人做过类似的功能吗?
VCL_MESSAGE_HANDLER(WM_SETCURSOR,TMessage,SetCursorResponse);
下面这两句,也是可以设置,不过似乎设置成了窗体全局的,不是控件局部的
HCURSOR cursor = LoadCursor(HInstance,"Cursor_1");
::SetCursor(cursor);
我也想过替换BCB自带的鼠标样式,似乎没有效果。
是不是只能用控件的Cursor赋值的属性,能否用API来完成啊?
鼠标 Cursor
[解决办法]
截获WM_SETCURSOR消息,判断鼠标当前的位置下的控件,装载不同的光标。
void __fastcall TForm1::WndProc(TMessage &Msg)
{
if (Msg.Msg == WM_SETCURSOR)
{
POINT pt;
::GetCursorPos(&pt);
HWND h = WindowFromPoint(pt);
if (h == Button2->Handle)
{
HCURSOR hCursor = LoadCursorFromFile("D:\\ccrun\\123.cur");
::SetCursor(hCursor);
Msg.Result = true;
return;
}
}
TForm::WndProc(Msg);
}