You should do something like this.
cursor.mqh
#import "user32.dll"
int SetCursor(int hCursor);
int LoadImageW(int instance, string lpszName, uint uType, int cxDesired, int cyDesired, uint fuLoad);
#import
#define IMAGE_CURSOR 2
#define LR_DEFAULTSIZE 0x00000040
#define LR_LOADFROMFILE 0x00000010
cursor.mq4
#property strict
const string Image = "path-to-your-program\\MQL4\\Images\\busy_i.cur";
#include <cursor.mqh>
void OnStart()
{
int h = LoadImageW(0, Image,
IMAGE_CURSOR,
0,
0,
LR_DEFAULTSIZE | LR_LOADFROMFILE);
Print("h=", h);
int p = SetCursor(h);
Print("p=", p);
while(!IsStopped())
{
Sleep(1000);
}
SetCursor(p);
}
It works in the sense that correct handles are received.
The cursor is not displayed though, because the terminal is setting it on every mouse event according to its internal rules, hence your custom cursor is instantly overriden. So, i think, your requirement is not doable. You should reconsider your task and find another approach for what you want to achieve.