goo

アイコン描画

◆一覧リスト
HSP Ver3.0
HSP Ver2.61
ブログ関連
その他
★人気blogランキング

「アイコン取得と描画」

「ExtractIcon」では取得できないアイコン(関連付けされているアイコン)を取得します。
「ExtractAssociatedIcon」を使用します。
第三引数が違うだけです。

ファイル、フォルダのアイコン描画
//////////////////////////////////////////////////////////////////////
//	MODULE DRAW_ICON
#module DRAW_ICON

// 関数の登録
#uselib "shell32.dll"
#cfunc	ExtractAssociatedIcon	"ExtractAssociatedIconA"	int,str,var

#uselib "user32.dll"
#func	DestroyIcon	"DestroyIcon"	int
#cfunc	DrawIcon		"DrawIcon"		int,int,int,int
#cfunc	DrawIconEx		"DrawIconEx"	int,int,int,int,int,int,int,int,int

// アイコン(hIcon)を取得
#defcfunc GetIcon str filename,int p
	iIcon=p
	hIcon=ExtractAssociatedIcon(hinstance,filename,iIcon)
return hIcon

// アクティブウィンドウの
// カレントポジション(ginfo(22),ginfo(23))にINDEX(p)の
// アイコン(filename)を描画
#deffunc DrawIcon str filename,int p
	hIcon=GetIcon(filename,p)
	if( hIcon == 0 ) : return 0
	ret=DrawIcon(hdc,ginfo(22),ginfo(23),hIcon)
	redraw 1
	DestroyIcon hIcon
return ret

// アクティブウィンドウの
// カレントポジション(ginfo(22),ginfo(23))に
// サイズ(x,y)でINDEX(p)のアイコン(filename)を描画
#deffunc DrawIconEx str filename,int p,int x,int y
	hIcon=GetIcon(filename,p)
	if( hIcon == 0 ) : return 0
	ret=DrawIconEx(hdc,ginfo(22),ginfo(23),hIcon,x,y,0,0,0x03)
	redraw 1
	DestroyIcon hIcon
return ret

#global
////////////////////////////////////////////////////////////////////////////

*main
	pos 10,10
	DrawIcon "c:\\",0

	pos 50,50
	DrawIcon "c:\\windows\\system32\\user32.dll",1

	pos 100,100
	DrawIconEx "c:\\",0,120,120
stop




コメント ( 0 ) | Trackback ( 0 )