それとなくHSP>HSP関連>カーソルを変更する
カーソルを変更する




HSPでカーソルが変わるときは無限ループなどで砂時計になることはありますが、自発的に変更することは標準ではできません。WindowsAPIを使って変えてみましょう。

#define IDC_ARROW   $00007F00
#define IDC_IBEAM   $00007F01
#define IDC_WAIT    $00007F02
#define IDC_CROSS   $00007F03
#define IDC_UPARROW $00007F04
#define IDC_SIZE    $00007F80
#define IDC_ICON    $00007F81
#define IDC_SIZENWSE    $00007F82
#define IDC_SIZENESW    $00007F83
#define IDC_SIZEWE  $00007F84
#define IDC_SIZENS  $00007F85
#define IDC_SIZEALL $00007F86
#define IDC_NO  $00007F88
#define IDC_HAND    $00007F89
#define IDC_APPSTARTING $00007F8A
#define IDC_HELP    $00007F8B
#module
#uselib "user32.dll"
 #deffunc SetSystemCursor int a
    mref type, 0            ;カーソルの種類
    mref bmscr, 67
    ; システム定義カーソルのハンドル取得
    pm = 0, type
    #cfunc lc "LoadCursorA" int,int
    hCursor = lc(pm,a)      ; カーソルハンドル
   
    pm.0 = bmscr.13         ; ウィンドウハンドル
    pm.1 = -12              ; GCL_HCURSOR
    pm.2 = hCursor          ; カーソルハンドル
    #cfunc sl"SetClassLongA" int,int,int
    s=sl(pm.0,pm.1,pm.2)
    ; カーソル変更
    #cfunc sc "SetCursor" int
    s=sc(hCursor)
    return

  #global
//////////////////////////////////////////////////
 
/*
IDC_APPSTARTING     標準矢印カーソルおよび小型砂時計カーソル
IDC_ARROW           標準矢印カーソル
IDC_CROSS           十字カーソル
IDC_IBEAM           アイビーム (縦線) カーソル
IDC_ICON            現在は使われません
IDC_NO              禁止カーソル
IDC_SIZE            現在は使われません
IDC_SIZEALL         方向矢印カーソル
IDC_SIZENESW        斜め左下がりの両方向矢印カーソル
IDC_SIZENS          上下両方向矢印カーソル
IDC_SIZENWSE        斜め右下がりの両方向矢印カーソル
IDC_SIZEWE          左右両方向矢印カーソル
IDC_UPARROW         垂直の矢印カーソル
IDC_WAIT
*/
  SetSystemCursor IDC_CROSS

CPUをフルに使っているわけでもないのに砂時計を表示するなど、誤解を招くようなカーソルの変更には注意しましょう。

Copyright(C)Begriff 2007-2009.
inserted by FC2 system