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


HSPTV!掲示板


未解決 解決 停止 削除要請

2010
0612
雨倉未定プログレスバー8解決


雨倉

リンク

2010/6/12(Sat) 16:38:18|NO.33217

はじめて質問させて頂きます。
未定プログレスバーはどうすれば作れますか?



この記事に返信する


KA

リンク

2010/6/12(Sat) 17:04:17|NO.33218

「未定プログレスバー」はさておき、普通の「プログレスバー」は作れるのでしょうか?

具体的にどう表示させたいのか分かりませんが「未定プログレスバー」に限れば、GIF
のアニメーションを作る方が早いです。または、小さいウインドウに文字で■を書いてい
く等など。

APIを呼び出したいと言う意味でしょうか?



Kpan

リンク

2010/6/12(Sat) 18:56:50|NO.33221

>未定プログレスバー
こんな表現始めて見ました。(^^;

ググるとWikipediaに載ってるも、ヒット数的にぜんぜん
使われてない? いまいちどういうプログレスバーなのか
分からず。。。



雨倉

リンク

2010/6/12(Sat) 19:23:23|NO.33223

> APIを呼び出したいと言う意味でしょうか?
そうです。
winobjで普通のプログレスバーは作れました。

>Kpanさん
右から左に流れていくプログレスバーです。



Hiroaki Software

リンク

2010/6/12(Sat) 19:35:41|NO.33224

ふむ。不確定型のプログレスバー(進行状況バー)のことですね。

それでしたら以下のサンプルで実現できます。

//マクロとAPI呼び出し #uselib "user32.dll" #func SetWindowLong "SetWindowLongA" int,int,int #func GetWindowLong "GetWindowLongA" int,int #define PBS_MARQUEE 0x08 #define PBM_SETMARQUEE 0x040A #define GWL_STYLE (-16) #define WS_CHILD 0x40000000 #define WS_VISIBLE 0x10000000 #define PBM_SETRANGE 0x0401 #define PBM_SETPOS 0x0402 #define ctype MAKELPARAM(%1,%2) (%1 | %2<<16) //プログレスバー設置 pos 5,5 winobj "msctls_progress32","",0,WS_CHILD | WS_VISIBLE,630,30 //プログレスバーのハンドルを取得 hProgress = objinfo(stat,2) //プログレスバーの範囲を0〜100にする sendmsg hProgress ,PBM_SETRANGE,0,MAKELPARAM(0,100) //プログレスバーのスタイルにPBS_MARQUEE(0x040A)を追加 GetWindowLong hProgress , GWL_STYLE SetWindowLong hProgress , GWL_STYLE ,stat | PBS_MARQUEE //プログレスバーの状態を不確定型にする sendmsg hProgress ,PBM_SETMARQUEE,1,1 //5秒待つ await 5000 //プログレスバーの状態を確定型(通常の状態)にする sendmsg hProgress ,PBM_SETMARQUEE,0,0 //プログレスバーのスタイルからPBS_MARQUEE(0x040A)を除く GetWindowLong hProgress , GWL_STYLE SetWindowLong hProgress , GWL_STYLE,stat ^PBS_MARQUEE //プログレスバーの位置を100まで移動する repeat 100,1 sendmsg hProgress ,PBM_SETPOS,cnt,0 await 100 loop

尚、sendmsg hProgress ,PBM_SETMARQUEE,1,1、につきましては
第3パラメータでON(1)/OFF(0)を第4バラメータで速度をミリ秒単位で指定できます



KA

リンク

2010/6/12(Sat) 20:23:41|NO.33225

>>winobjで普通のプログレスバーは作れました。

 →”作れるか”だけを、聞いたのでは無かったのですが・・・・。

  「作れるのなら、それを”表示させるための値”を、操作してみては」
  と言う意味合いも含んでいました。

 個人的には、あの中途半端な表示方法は嫌いです。
 最近のインストーラで良く見かけますが
  ○100%に成ると振り出しに戻るタイプ。 →脱力します。
  ○途中まで行くと戻るタイプ        →いらいらします。
  ○跳ね返って、うろうろするタイプ     →意味がありません。
 他にも有るのかな?



GENKI

リンク

2010/6/12(Sat) 21:37:20|NO.33231

プログレスバーが一般的な名称ですが、llmod3ではプログレスボックスと読んでいます。
llmod3はいつから標準になったんだったかな…HSP3.21なら標準で入っています。

#include "llmod3/llmod3.hsp" #include "llmod3/progbox.hsp" progbox 300,20 ;幅300,高さ20のプログレスボックスを作る progrng 0,200 ;範囲は0から200 *lp progset 1, 2 ; await 30 goto *lp


ところで、llmod3ってそろそろ中身を見直す時期なんじゃないかな…とスクリプト見てて最近思った。



GENKI

リンク

2010/6/12(Sat) 21:56:00|NO.33233

すみません。ログをよく読みもせず…恥ずかしい。 orz
恥ずかしいやら悔しいやらでごまかすためにHiroaki Softwareさんのスクリプトを参考にllmod3とミックスしてみた。


#include "llmod3/llmod3.hsp" #include "llmod3/progbox.hsp" #uselib "user32.dll" #func SetWindowLong "SetWindowLongA" int,int,int #func GetWindowLong "GetWindowLongA" int,int #define PBM_SETMARQUEE 0x040A #define GWL_STYLE (-16) #define PBS_MARQUEE 0x08 progbox 300,20 ;幅300,高さ20のプログレスボックスを作る id = stat hProgress = objinfo(id,2) //プログレスバーのスタイルにPBS_MARQUEE(0x040A)を追加 GetWindowLong hProgress , GWL_STYLE SetWindowLong hProgress , GWL_STYLE ,stat | PBS_MARQUEE sendmsg hProgress ,PBM_SETMARQUEE,1,1


> 個人的には、あの中途半端な表示方法は嫌いです。

進んでるのに終わらないプログレスバーって腹立ちますよねー。
でも私の場合、他の作業やるので基本的に見ないので気にならない。(←ユーザーが順応したケース)


> 具体的にどう表示させたいのか分かりませんが「未定プログレスバー」に限れば、GIF
> のアニメーションを作る方が早いです。

HSPでGIFアニメって簡単に表示できましたっけ?



雨倉

リンク

2010/6/13(Sun) 12:09:07|NO.33241

皆さんありがとうございました。



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