VB.NETで上下に進行するProgressBarを作るには?

解決


IYANG  2005-06-17 04:32:59  No: 122749

VB6などでは、CreateWindowExなどを使ってインスタンスを作れて
そこでPBS_VERTICALなどのスタイルを設定する方法が一般的な
感じですが、VB.NETの場合は、これを同じようなことが
なんらかの方法でできるものなのでしょうか?

よろしくお願いします。


特攻隊長まるるう  2005-06-17 21:11:25  No: 122750

Value が変更されたら Maximum と Minimum の値を見て
四角書けばいいだけだよね?…一般的な方法がどういうものか
は知らないけど UserControl で自作しちゃうなぁ…。
直接 UserControl の表面にお絵描きすれば…何も他の
コントロールを用意する必要なさそうだし。


IYANG  2005-06-17 21:46:31  No: 122751

お返事ありがとうございます。

なるほど、自作してしまうのか・・・。
VB.NETでも、SendMessageとかCreateWindowExとかを
使う方法というのは、いろいろ調べてわかってきました。
プログレスバーをCreateWindowExするときに
PBS_VERTICALのスタイルを設定すると
上下に進行するプログレスバーができそうです。

すでにあるコントロールに対して、SendMessageを使って
スタイルを変更することが、どうもできないような
気がします。そのようなプログレスバーに対する
メッセージ(PBM_?)が、見当たらない感じですので。

UserControlを自作したことはまだないのですが
そのほうが簡単なのかなぁ。

いろいろとありがとうございました。
またよろしくお願いします。


深山  2005-06-17 22:31:33  No: 122752

#既に解決されてるところ失礼しますm(__)m

> VB.NETの場合は、これを同じようなことが
> なんらかの方法でできるものなのでしょうか?

  IYANGさんもお調べになったように、 VB6 と同様 API を駆使して
作成することも可能です。
  しかし、標準で用意されているコントロールをカスタマイズするときには
そのクラスを継承したクラスを作成するのが一般的かと思います。
CreateParams プロパティをオーバーライドして必要なスタイルを設定、
という形ですね。
#尤も、残念ながら ProgressBar クラスは継承できませんので
# Control クラスからの継承という形で作成することになるでしょうか。
#その場合は ControlStyles.UserPaint を false にする必要もあります。

> スタイルを変更することが、どうもできないような

  スタイルを変更するときは、 GetWindowLong API で取得した値を変更して
SetWindowLong API で設定するという手順になります。
  但し、スタイルによっては作成時にしか指定できないものもありますので
ご注意くださいませ。
# PBS_VERTICAL が作成後に指定できるかどうかは存じません。
#指定できるようであれば、自作クラスを作成する必要はないでしょう。


IYANG  2005-06-18 00:00:08  No: 122753

アドバイスに感謝いたします。
GetWindowLongとSetWindowLongを調べて
試してみたのですが、まだうまくスタイルを
変更する子はできていません。
与えているパラメータなどが町が手いる可能性も
まだ捨てきれないので、もうしばらくいろいろと
テストをしてみようと思っています。

またよろしくお願いします。


マグ  2005-06-18 20:06:38  No: 122754

コントロールを作ったほうが速いと思います。
今後、また、使うために・・・・・・

あと、コントロール作って、ネット上で配布している方もいるので、
探すのも一つの手だと思います。

私のページですが・・・・
http://www.geocities.jp/dfgkthug/Content.html
とか・・・・・
あとは自分でぐぐってください。


IYANG  2005-06-18 23:17:42  No: 122755

>マグさん

貴重なご意見をありがとうございます。
さっそくマグさんが作られたコントロールを
拝見しました。
なるほど、自作のコントロールは、こんなふうに
作れるんですね。
たいへん参考になりました。
いっちょ自分でも作ってみようかなと
そんな気になってきました。

またよろしくお願いします。


※返信する前に利用規約をご確認ください。




  


  このエントリーをはてなブックマークに追加