Delphi で Loadcursor() を使用して取得されるカーソルは白黒のみです。プログラムで色付きのカーソルを取得するにはどうすればよいですか?著者は次のようなプログラムを作成しようとしました。
方法 1: Loadcursorfromfile() を使用して、外部からアイコンをカーソルとして読み込みます
Loadcursorfromfile() 関数は、サフィックス *CUR、*ICO、および *ANI を持つファイルをカーソルとして読み取ることができます。ICO はカラー アイコン形式 (イメージ エディタで作成可能)、ANI はアニメーション カーソル形式です。以下は、カーソルとしてアイコンを開くデモ プログラム セグメントです。カーソルがテスト領域に移動すると、カーソルは選択したパターンに変わります。
{次のようにします: opendialog1:Topendialog;Bitbtn1:Tbitbtn}
手順 TForm1.BitBtn1Click(Sender:TObject);
var tt:pchar;size:integer;s:string;
始める
if opendialog1.Execute then
始める
サイズ:=長さ(opendialog1.ファイル名);
getmem(tt,size);
s:=opendialog1.ファイル名;
strpcopy(tt,s);
screen.cursors[2]:=loadcursorfromfile(tt);
bf.cursor:=2;
freemem(tt,size);
終わり;
終わり;
方法 2: リソース ファイルからカラー カーソルをロードする
方法 1 を使用してプログラムを送信する場合は *CUR ファイルを含める必要があるため、リソース ファイルからカラー カーソルをロードする方がより現実的な方法です。アイコンを使用して色付きカーソルを保存し、使用時にアイコンを一時ファイルに保存し、Loadcursorfromfile() を使用して一時ファイルから色付きカーソルを読み取ります。
プログラムセグメント:
プロシージャ ZloadfromResourse(screenindex:integer;name:Pchar);
var td:ticon;
始める
試す
td:=ticon.Create;
td.Handle:=LoadIcon(インスタンス,名前);
td.SaveToFile('temp.cur');
screen.Cursors[screenindex]:=loadcursorfromfile('temp.cur');
deletefile('temp.cur');
ついに
td.free;
終わり;
終わり;
このプログラムは、name という名前のアイコンを、シリアル番号 screenindex を持つカーソルに変更します。
例:
ZloadfromResource(2,'myicon');
Form1.cursor:=2;