WindowsXPを立ち上げたときにロゴ画面に
表示される進行状況がProgressBar?みたいなものと
同じ動作をさせるにはどうすればよろしいのでしょうか?
探したのですが、見つかりません。
環境を書き忘れていました。
VB.NETです。
ソースはこのような感じですが・・・・・
ProgressBarが動いてくれません(TT)
Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
With Label1
.Text = ""
.Top = ProgressBar1.Top
.Left = ProgressBar1.Left
.Height = ProgressBar1.Height
.Width = 0
End With
With ProgressBar1
.Maximum = 100
.Minimum = 0
.Step = 10
.Value = 0
End With
With Timer1
.Interval = 100
End With
Timer1.Start()
End Sub
Private Sub Timer1_Tick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Timer1.Tick
With ProgressBar1
If .Maximum >= .Value Then
.Value = 0
Else
.Value += 10
End If
If .Value <= 30 Then
Label1.Width = 0
Else
Label1.Width = .Width / (.Maximum / 10) * ((.Value - 30) / 10)
End If
End With
End Sub
Private Sub Form1_Closed(ByVal sender As Object, ByVal e As System.EventArgs) Handles MyBase.Closed
Timer1.Stop()
End Sub
DoEvents() してみたらどうでしょう。
無限ループではなく、タイマーイベントで処理しているため、
CPUが100%を超えないため、DoEvents()しても変わりません。
試してみましたが、だめでした。
原因が分かりました。
単純にミスしていました。
If .Maximum >= .Value Then
の不等号が逆でした。
それと、XPのProgressBarは緑色でメータには上から下に向かって
グラデーションになっています。
これと、同じようにメータの中にグラーデーションをかけたいのですが、
どうすれば、よろしいのでしょうか?
XP 視覚テーマについて勉強しましょう。
XP だからといって、常にそういうわけではありませんが。
(MSSTYLES ファイルで変わりますので)
http://dobon.net/vb/dotnet/control/xpstyle.html
>XP 視覚テーマについて勉強しましょう。
>XP だからといって、常にそういうわけではありませんが。
>(MSSTYLES ファイルで変わりますので)
マニフェストファイルのことは知っています。
XPの場合はマニフェストの埋め込みで何とかなるのですが、
2000のPCでも、XP同様、緑のグラデーションにしたいのですが、
可能でしょうか?
つーか、あんたがはじめにXPって言ってるんじゃん。
自分の質問の仕方が悪いのに、何をいってんだ?
「XPのロゴ画面と同じような動作」
と言っただけで自分の開発環境がXPだとは言ってないのでは?
といっても、2000だとも言ってないので
XPだと思われても仕方ないかもしれません。
OSもちゃんと書きましょうね。
>「XPのロゴ画面と同じような動作」
>と言っただけで自分の開発環境がXPだとは言ってないのでは?
>といっても、2000だとも言ってないので
>XPだと思われても仕方ないかもしれません。
>OSもちゃんと書きましょうね。
そうです。まだ、開発環境を言ってません。
「XPのロゴ画面と同じような動作」と同じようなレイアウトと動作を
Windows 2000で行なわせるにはどうすればいいでしょうか?
ということを聞いているんですが・・・・・
誤解を招くような質問でしたか?
OSの環境はXPですが、ソフトを作る過程でどうしても、2000でも、そのように
表示させたいので、質問しました。
確かに、環境は事前に説明ありきが大前提ですな。
そうすることで不毛なやり取りをせずにすみます。
ということで、まだ書いていない環境を提示してください。
>ということで、まだ書いていない環境を提示してください。
環境を新たに記載します。
環境:VB.NET + WindowsXPです。
>「XPのロゴ画面と同じような動作」と同じようなレイアウトと動作を
>Windows 2000で行なわせるにはどうすればいいでしょうか?
動作は出来ているのですが、レイアウトがProgressBarのメータの中を
緑のグラーデーションにしたいのですが、Windows2000でそのように
表示させたいのですが、可能でしょうか?
開発環境はVB.NET + WindowsXPだけど
動作環境はVB.NET + WindowsXPではなく、
VB.NET + Windows2000ということね。
↑ここ重要!
>開発環境はVB.NET + WindowsXPだけど
>動作環境はVB.NET + WindowsXPではなく、
>VB.NET + Windows2000ということね。
>↑ここ重要!
今まで、開発環境=動作環境だと思っていました。
開発環境と動作環境って意味違ったのですか。
知りませんでした。
親切に教えてくださって、ありがとうございました。
自分で作るしかないのではないでしょうか?
苦労のわりに報われない気がしますが・・・
でもまぁ、フォームにお絵描きする要領で完全に自分の制御下の
ProgressBar を作れば、例えば Bitmap でも利用してやって
花柄の…とかw。面白いものはできそうですけどね。画像ファイルを
プロパティで設定可能にして、たてよこ変更可能とか…作り込めば、
Tips として欲しい人はいると思います。
全て自作するしかないのでしょうか。
ProgressBarのコントロールを調べましたが、
ProgressBar1_Paintのイベントハンドラーが見つからない上、
e.Graphicsもエラーが出てしまい、描画できませんでした。
PictureBoxでProgressBarを自作してしまえば、いいと思うのですが、
あまり、CPUに負荷をかけたくありません。
理由は
フォームのインスタンスを渡し、プラグインを読み込むときに
時間がかかります。
まだ、2つですが、20個とかなると、
時間がかなり、かかります。
それを防ぐため、スプラッシュウィンドウを表示して、
フリーズしたかどうかをユーザに伝えるため、
ProgressBarを使いWindowsXPのようなデザインと動きにさせたかったんですが、
ProgressBarを自作となれば、おそらく、描画でかなりCPUを使用してしまうため、
それができないんです。
無理なようなのでWindows2000に対してはAPIでProgressBarのBackColorとForeColor
を変更するようにします。
やおきなさん、じゃんぬねっとさん、匿名さん、いなさん、
特攻隊長まるるうさん、ありがとうございました。
暇だったので、ProgressBarのコントロールを自作しました。
ソースが長すぎるので
http://www.geocities.jp/dfgkthug/TipsFolder/kizi/VB/ProgressBarXP.html
自分のホームページにアップしました。
ところで、これって、本当に欲しがる方っているのでしょうか?
以前にも、マグさんがらみで、ちょっとあったと思いますが、
質問するときに最低限するマナーがあるのでは、ないのでしょうか?
あいかわずという気がしてしょうがありません。
>質問するときに最低限するマナーがあるのでは、ないのでしょうか?
あると思っています。
ツイート | ![]() |