|
|
2007/11/25(Sun) 17:03:54|NO.12588
dialog
などで出るダイアログや、ファイルを削除するときに出るダイアログの
左側にある画像を使うにはどうすればいいですか?
|
|
2007/11/25(Sun) 17:23:48|NO.12589
ダイアログ用のアイコンは explorer.exe に入っているのでそれを取り出して描画します。
ExtractIconExの第二パラメータを変更すればほかのアイコンに変更できます。
#uselib "user32.dll"
#func global InvalidateRect "InvalidateRect" int,int,int
#func global DrawIconEx "DrawIconEx" int,int,int,int,int,int,int,int,int
#uselib "shell32.DLL"
#func global ExtractIconEx "ExtractIconExA" int,int,int,int,int
filename="explorer.exe"
//ExtractIconEx ファイル名,アイコンのインデックス(7="?" 8="!"),アイコンハンドル(大),アイコンハンドル(小),アイコンの数
ExtractIconEx varptr(filename),7,varptr(hicon),0,1;アイコン抽出
DrawIconEx hdc,0,0,hicon,32,32,0,0,3
InvalidateRect hwnd,0,1
|
|
2007/11/25(Sun) 17:33:21|NO.12590
USER32.DLL でも 代用可能ですよ。
これって、Vistaでもできるんでしょうかね。
#uselib "user32.dll"
#func global InvalidateRect "InvalidateRect" int,int,int
#func global DrawIconEx "DrawIconEx" int,int,int,int,int,int,int,int,int
#uselib "shell32.DLL"
#func global ExtractIconEx "ExtractIconExA" int,int,int,int,int
filename="user32.dll"
//ExtractIconEx ファイル名,アイコンのインデックス(7="?" 8="!"),アイコンハンドル(大),アイコンハンドル(小),アイコンの数
ExtractIconEx varptr(filename),1,varptr(hicon),0,1;アイコン抽出
DrawIconEx hdc,0,0,hicon,32,32,0,0,3
InvalidateRect hwnd,0,1
|
|
2007/11/25(Sun) 18:30:44|NO.12594
モジュールを作ってみたのですが時々はみ出てしまいます・・・。
#module OD
#uselib "user32.dll"
#func global InvalidateRect "InvalidateRect" int,int,int
#func global DrawIconEx "DrawIconEx" int,int,int,int,int,int,int,int,int
#func MessageBeep "MessageBeep" int
#cfunc GetWindowLong "GetWindowLongA" int, int
#func SetWindowLong "SetWindowLongA" int, int, int
#uselib "shell32.DLL"
#func global ExtractIconEx "ExtractIconExA" int,int,int,int,int
#uselib "gdi32.dll"
#func GetTextExtentPoint32 "GetTextExtentPoint32A" int,int,int,int
#deffunc DialogInit
screen 1,ginfo(20),ginfo(21),6,px,py
SetWindowLong hwnd, -16, GetWindowLong (hwnd, -16) - $20000
dim textSize,2
font "MS UI Gothic"
return
#deffunc GetTxtExtPoint var tBuf,array tSize
dim tSize,2
txtLen=strlen(tBuf)
GetTextExtentPoint32 hdc,varptr(tBuf),txtLen,varptr(tSize)
return
/*
: MessageBoxB "文字列",p1,"タイトル"
: → p1 = 1.[!] 2.[?] 3.[×] 4.[i]
*/
#deffunc MessageBoxB str p1 , int p2 , str p3
// パラメータ代入
String = p1
Type = p2
Caption = p3
if Type = 0 : return
// 文字列の長さ取得
GetTxtExtPoint String,textSize
gsel 1
clrobj 0
// 位置と大きさ
sSizeX = textSize.0
sSizeY = textSize.1
wSizeX = sSizeX + 20
wSizeY = sSizeY + 60
px = (ginfo(20)-wSizeX)/2
py = (ginfo(21)-wSizeY)/2
// サイズ変更
width wSizeX,wSizeY,px,py
// キャプション
title Caption
// 塗りつぶし
syscolor 15 : boxf : syscolor 8
// 文字列描画
pos ((wSizeX-sSizeX)/2)+42,((wSizeY-sSizeY)/2)-14
mes String
// 1.[!] 2.[?] 3.[×] 4.[i]
IconIndex = Type
// Sound
switch Type
case 1
MessageBeep $30
swbreak
case 2
MessageBeep $20
swbreak
case 3
MessageBeep $10
swbreak
case 4
MessageBeep $40
swbreak
swend
filename = "user32.dll"
ExtractIconEx varptr(filename),IconIndex,varptr(hicon),0,1 //アイコン抽出
DrawIconEx hdc,10,14,hicon,32,32,0,0,3
InvalidateRect hwnd,0,1
pos (wSizeX-100)/2,wSizeY-25
objsize 100,20
button gosub "OK",*BTN
sendmsg objinfo(stat, 2), $F4 , $1
gsel 1,1
return
*BTN
gsel 1,-1
return
#global
DialogInit // 初期化...
dialog "#Error19 in Line1 (???)\n-->0で除算しました",1,"Error"
MessageBoxB "#Error19 in Line1 (???)\n-->0で除算しました",1,"Error"
| |
|
2007/11/25(Sun) 19:47:35|NO.12597
ありがとうございます!
explorer.exeやuser32.dllから取り出して使うんですね。
|
|
2007/11/25(Sun) 19:48:05|NO.12598
あ、解決チェックを付け忘れてました。
|
|