HSPポータル
サイトマップ お問い合わせ


HSPTV!掲示板


未解決 解決 停止 削除要請

2022
0314
アキアキノヒロロ[hgimg4]で、ファイルOPENの [dialog] は、どうやるのか10解決


アキアキノヒロロ

リンク

2022/3/14(Mon) 18:45:33|NO.95724

[hgimg4]で、例えば
> dialog "txt",16,"テキストファイル"
とすると、
> dialog "txt",0,"テキストファイル"
と同等のダイアログになってしまい、
ファイルを開けません。記述場所を
> #include "hgimg4.as"
の前にもってきても、ダメでした。
あまりに基本的な質問で、気恥ずかしいですが、お教え願います。



この記事に返信する


MillkeyStars

リンク

2022/3/14(Mon) 19:27:20|NO.95726

hgimg4 (dish)上での、ファイルを開く・保存のダイアログは未実装だと思いますが。



zrs90(5さい)

リンク

2022/3/14(Mon) 19:56:50|NO.95727

hsp3.6 の support_cmds によると

Dialog 命令は
HSP3Dish非互換コマンド です。

HGIMG4 プログラミングガイド
39 階層情報の取得で、モジュールとして
dialog 命令が使われているようです。

代替の命令があるかは、当方、hgimg4
を使っていないので、不明ですが

サンプルは、tamane_tree.hsp
です。



TOMATO

リンク

2022/3/14(Mon) 20:11:04|NO.95728

Windows版Dishに限っては外部DLLが読めるので、
Win32API経由でファイル選択ダイアログを起動するとか。

小ワザ/ファイル選択ダイアログ
https://wiki.hsp.moe/%E5%B0%8F%E3%83%AF%E3%82%B6%EF%BC%8F%E3%83%95%E3%82%A1%E3%82%A4%E3%83%AB%E9%81%B8%E6%8A%9E%E3%83%80%E3%82%A4%E3%82%A2%E3%83%AD%E3%82%B0.html#x00971fe

より引用



#include "hgimg4.as" #uselib "Comdlg32.DLL" #func GetOpenFileName "GetOpenFileNameA" int #define BUFSIZE 260 #define FILTERSIZE 512 #define ALLTYPE "ALL files (*.*)@*.*@" #define PICTURE "画像ファイル (*.bmp;*.mag;*.jpg)@*.bmp;*.mag;*.jpg@" #define SOUND "音楽ファイル (*.mid;*.mp3;*.wav)@*.mid;*.mp3;*.wav@" #define DOCUMENT "文書ファイル (*.txt)@*.txt@" #define OFN_FILEMUSTEXIST $00001000 dim ofn , 22 sdim aplFilter , FILTERSIZE+1 sdim usrFilter , FILTERSIZE+1 sdim filename , BUFSIZE+1 aplFilter = PICTURE + SOUND + DOCUMENT + ALLTYPE + "@" usrFilter = "ユーザ選択フィルタ (*.*)@*.*@" + "@" repeat await 0 mutch=instr(aplFilter,start,"@") if mutch = -1 : break poke aplFilter , start + mutch , $00 start += mutch + 1 loop start = 0 repeat await 0 mutch=instr(usrFilter,start,"@") if mutch = -1 : break poke usrFilter , start + mutch , $00 start += mutch + 1 loop ofn.0 = 88 ; lStructSize ofn.1 = hwnd ; hwndOwner ofn.2 = hinstance ; hInstance ofn.3=varptr(aplFilter) ; lpstrFilter ofn.4=varptr(usrFilter) ; lpstrCustomFilter ofn.5 = FILTERSIZE ; nMaxCustFilter ofn.6 = 1 ; nFilterIndex ofn.7=varptr(filename) ; lpstrFile ofn.8 = BUFSIZE ; nMaxFile ofn.9 = 0 ; lpstrFileTitle ofn.10 = 0 ; nMaxFileTitle ofn.11 = 0 ; lpstrInitialDir ofn.12 = 0 ; lpstrTitle ofn.13 = OFN_FILEMUSTEXIST ; Flags prm=varptr(ofn) GetOpenFileName prm if stat = 0{ dialog "失敗" , 0 , "終了確認" : end } title filename stop



zrs90(5さい)

リンク

2022/3/14(Mon) 20:14:39|NO.95729

訂正。

モジュールでは、ありませんでした。
単純に、dialog "", 16,"" から使えないようです。
申し訳ないです。



アキアキノヒロロ

リンク

2022/3/14(Mon) 21:08:06|NO.95730

2時間もたたないうちにご返事を頂き、みなさん有難うございます。

やはりと言うか、未実装、非互換コマンド、なんですか。
標準や警告の [dialog] なら、正常に機能していたので、他のものも使えるものと思っていました。

TOMATOさん、スクリプトご紹介頂き、有難うございます。
さっそく試したところ、無事開けました。
解決といたします。

それでも、[hgimg4]にも、実装してもらいたいですね。



zrs90(5さい)

リンク

2022/3/14(Mon) 21:51:30|NO.95731

私も、サポートコマンドの文書見るまで
Android、iOS、.js等は別として、dialog 命令
使えると思ってました。

(※外部dll 使って、Win32api 経由で
呼び出せるのも、驚きましたが
今後、カラーダイアログ等も、含めて実装して
頂きたいですね。)



アキアキノヒロロ

リンク

2022/3/18(Fri) 09:49:04|NO.95758

TOMATOさんご紹介の方法で、[(open)dialog] 命令が、現状の [hgimg4] でも使えるのは、とても嬉しいです。
また、初心者同然の私ながら、[#func] についても、少しは具体的理解が持てたように思え、感謝しています。

ただ、[(color)dialog] の方は、探してみましたが、手がかりが見つかりません。
何かしら、方法があるのでしょうか。
Win32API経由とかも、調べましたが、私の力では、どうも難しいです。
解決としましたが、ずっと気になっていましたので......。



TOMATO

リンク

2022/3/18(Fri) 10:18:11|NO.95759

こんな感じかと

【参考】
色選択ダイアログ
http://lhsp.s206.xrea.com/hsp_other.html#2


#include "hgimg4.as" // http://lhsp.s206.xrea.com/hsp_other.html#2 #module #define ctype GetRValue(%1) (%1 & 0xFF) #define ctype GetGValue(%1) (%1 >> 8 & 0xFF) #define ctype GetBValue(%1) (%1 >> 16 & 0xFF) #uselib "comdlg32" #cfunc ChooseColor "ChooseColorA" int #deffunc dialog_color int p1, int p2, int p3 dim sCHOOSECOLOR, 9 if p3 : lpCustColor = p3 : else : lpCustColor = varptr (hoge) sCHOOSECOLOR = 36, hwnd, 0, p2, lpCustColor, $1 | p1 if ChooseColor (varptr (sCHOOSECOLOR)) { color GetRValue(sCHOOSECOLOR.3), GetGValue(sCHOOSECOLOR.3), GetBValue(sCHOOSECOLOR.3) } return stat #global #define ctype RGB(%1,%2,%3) (%1 | %2 << 8 | %3 << 16) dialog_color 2, RGB($FF,0,0) repeat boxf redraw wait 10 loop



zrs90(5さい)

リンク

2022/3/18(Fri) 20:34:02|NO.95761

TOMATO さん、アキアキノヒロロ さん
ありがとうございました。

.dish の動作制約の絡みで、hsimg4 も
Win32api 経由の操作自体
今回の、ファイルダイアログの質問がなければ
出来ないと、私は思っていましたので...



アキアキノヒロロ

リンク

2022/3/20(Sun) 14:38:10|NO.95780

TOMATOさん、ご返事が遅れて、すいません。
「色選択」もできるようになったなんて、すごいです。

【参考】として挙げられた「色選択ダイアログ」は、
『HSP3プログラミング情報 Let's HSP! 』の「HSP3 あれこれ」内のものですね。
気づきませんでした。
また、別に上げたスレにも、お答え頂き、有難うございます。

[hgimg4]では、[button]等、ツール用のオブジェクトが使いづらかったり、
サポートされてなかったり。
こちらの方面も、バージョンアップに入れてもらえると、いいんですけど、
[hsp3dish]のスマホ関係もあって、一概に何でもとはいかないんでしょうね。



ONION software Copyright 1997-2023(c) All rights reserved.