Delphi 如何从Java按钮隐藏手光标?

Delphi 如何从Java按钮隐藏手光标?,delphi,delphi-10.3-rio,mouse-cursor,Delphi,Delphi 10.3 Rio,Mouse Cursor,我想从一个Java桌面应用程序中隐藏手形光标,该应用程序有一个虚拟键盘,当鼠标光标位于每个数字上时,光标将更改为手形 我使用透明图像(.cur文件)作为资源尝试了下面的代码,但无法隐藏手动光标 是否可以将手动光标隐藏到此类元素 program Project1; {$APPTYPE CONSOLE} {$R *.res} {$R 'mycursor.res'} uses Windows, Messages, SysUtils; procedure MyShowCursor(

我想从一个Java桌面应用程序中隐藏手形光标,该应用程序有一个虚拟键盘,当鼠标光标位于每个数字上时,光标将更改为手形

我使用透明图像(.cur文件)作为资源尝试了下面的代码,但无法隐藏手动光标

是否可以将手动光标隐藏到此类元素

program Project1;

{$APPTYPE CONSOLE}

{$R *.res}
{$R 'mycursor.res'}

uses
  Windows,
  Messages,
  SysUtils;

procedure MyShowCursor(Show: Boolean);
const
  OCR_HELP = 32651;
var
  xCursor: HCURSOR;
begin
  if Show then
    SystemParametersInfo(SPI_SETCURSORS, 0, 0, WM_SETTINGCHANGE or SPIF_UPDATEINIFILE)
  else
  begin
    xCursor := LoadCursor(HInstance, 'XCURSOR');
    SetSystemCursor(xCursor, OCR_NORMAL);
    xCursor := LoadCursor(HInstance, 'XCURSOR');
    SetSystemCursor(xCursor, OCR_APPSTARTING);
    xCursor := LoadCursor(HInstance, 'XCURSOR');
    SetSystemCursor(xCursor, OCR_CROSS);
    xCursor := LoadCursor(HInstance, 'XCURSOR');
    SetSystemCursor(xCursor, OCR_HAND);
    xCursor := LoadCursor(HInstance, 'XCURSOR');
    SetSystemCursor(xCursor, OCR_HELP);
    xCursor := LoadCursor(HInstance, 'XCURSOR');
    SetSystemCursor(xCursor, OCR_IBEAM);
    xCursor := LoadCursor(HInstance, 'XCURSOR');
    SetSystemCursor(xCursor, OCR_NO);
    xCursor := LoadCursor(HInstance, 'XCURSOR');
    SetSystemCursor(xCursor, OCR_SIZEALL);
    xCursor := LoadCursor(HInstance, 'XCURSOR');
    SetSystemCursor(xCursor, OCR_SIZENESW);
    xCursor := LoadCursor(HInstance, 'XCURSOR');
    SetSystemCursor(xCursor, OCR_SIZENS);
    xCursor := LoadCursor(HInstance, 'XCURSOR');
    SetSystemCursor(xCursor, OCR_SIZENWSE);
    xCursor := LoadCursor(HInstance, 'XCURSOR');
    SetSystemCursor(xCursor, OCR_SIZEWE);
    xCursor := LoadCursor(HInstance, 'XCURSOR');
    SetSystemCursor(xCursor, OCR_UP);
    xCursor := LoadCursor(HInstance, 'XCURSOR');
    SetSystemCursor(xCursor, OCR_WAIT);
  end;
end;

begin
  try
    MyShowCursor(False);
    Sleep(15000);
    MyShowCursor(True);
  except
    on E: Exception do
      Writeln(E.ClassName, ': ', E.Message);
  end;
  Readln;
end.
从参考资料中,我了解到:

java代码对某些游标有自己的管理,在这种情况下,“手”游标不同于系统,具有特殊的行为


版本:

为方便起见,摘自参考文献:

我的问题是: 我有一个带按钮的相框。 在这个按钮上,我做了一个

当我启动程序时,框架有默认光标(箭头)和“手”中的按钮。 在这个框架上,我有第二个按钮,上面有一个侦听器。 单击此按钮时,我调用一个库,该库通过调用以下方法修改Windows游标:

因此,点击按钮2后,我的窗口上的所有光标都变为“我的图像”,甚至谷歌链接上的“手”光标。在我的Java应用程序中,除了“手”之外,所有光标都被更改。Java似乎没有使用wintow的本机游标来表示“手”,但为什么呢?如果有人对这个问题有一个解决方案,我对它感兴趣,或者有一个解释


试着用手以外的东西来看看这个新光标是否被你的方法重新画过。这个想法是想看看是手有特殊的行为,还是用于Boron的光标


感谢您对ludomacho的回复。我尝试了其他游标(等待,交叉,…),我设法更改了游标,只有“主”游标不起作用。当我们仔细观察“主”光标时,它看起来与系统的“主”光标不同(没有阴影),而对于其他光标,它们是相同的。有一个非常简单的测试来找出答案,只需创建一个带有2个按钮的框架。在第一个例子中,我们做了:button1.setCursor(newcursor(Cursor.WAIT_Cursor));在第二个例子中,我们做了:button2.setCursor(newcursor(Cursor.HAND_Cursor));然后转到Windows设置,修改“手”和“等待”光标的外观。在应用程序中只修改了“wait”光标


java代码对“主”游标有自己的管理。 要显示系统(WindowsSeven)的“主”光标,必须修改JRE并重新编译它


我不理解Java应用程序和您的Delphi代码之间的关系。也不知道你真正想做什么。请解释一下。解决了的。谢谢你的关注。
bouton.setCursor(new Cursor(Cursor.HAND_CURSOR));
BOOL WINAPI SetSystemCursor(
  _In_  HCURSOR hcur,
  _In_  DWORD id
);
 
//OCR_HAND = 32649
SetSystemCursor(chemin_de_mon_image, 32649);
 
//OCR_NORMAL = 32512 
SetSystemCursor(chemin_de_mon_image, 32512 );
 
...