VBプログラマ質問スレ(Ver.6.0 まで) part57at TECH
VBプログラマ質問スレ(Ver.6.0 まで) part57 - 暇つぶし2ch943:デフォルトの名無しさん
12/01/13 05:47:47.09
x秒ごとに処理したいのにスレッドを止める必要ないでしょ
だいたい処理が瞬間に終わるわけでもあるまいし。
インターバルを設定できるTimerってのがあるんだけど

944:デフォルトの名無しさん
12/01/13 07:19:27.57
VB6でマルチスレッドってActiveXを使うやり方?

945:デフォルトの名無しさん
12/01/13 08:53:01.02
できた

Private cnt As Integer

Private Sub Form_Load()
  cnt = 0
  Timer1.Interval = 1000
End Sub

Private Sub Timer1_Timer()

  cnt = cnt + 1
  Label1.Caption = cnt
  
  If cnt Mod 3 = 0 Then
    Shell "notepad" '重い処理
  End If

End Sub


946:デフォルトの名無しさん
12/01/13 09:21:22.64
VBは1つのスレッドで、DoEventsによって並列処理を
しているように見せているだけ。
Sleepしたらそのスレッドは止まるのだから、VBプログラムの全てが止まる。
DoEventsでそういうことをやっているとデッドロックしやすい。
DoEventsをSwitchToThreadを同じようなものだと思っていると痛い目を見る。
非同期処理したいのであれば、Timerを使うべき。

947:デフォルトの名無しさん
12/01/13 09:38:57.77
マルチスレッドがやりたいならvb.netを使ったほうがいいよ
vb6でやるならマルチプロセスでやったほうがいいな

948:デフォルトの名無しさん
12/01/13 14:16:45.68
ActiveXExeのスレッドでマルチスレッドをやってみたことはある。

非同期で処理しようと思ったら、結局別スレッドで作成した
FormにTimerをおいて、そこから処理をスタートさせなければならない。

メソッドやプロパティはオブジェクト側のスレッドで同期して実行されるので
別スレッドのオブジェクトを呼び出しまくると、全然並列処理にならないw

949:デフォルトの名無しさん
12/01/13 18:56:07.60
>>934
あるよ。
FOR EACH的なものまである。

>>933
制御文レベルだとどれも似たようなもん。
しかし、それをもってほとんど一緒というお前はまだまだ素人。

950:デフォルトの名無しさん
12/01/13 19:08:54.62
>>942
Sleep 3000 は、3秒間何も出来ません、の意味。
やるんなら

Private Sub Timer1_Timer() 'インターバルを1000にしておく
  Static cnt As long
  
  If cnt = 0 Then
    'ここに3秒ごとの処理を入れる
  End If
  
  Text1.Text = Format(DateTime.Now(),"yyyy/mm/dd hh:nn:ss")
  
  cnt = cnt + 1
  If 3 <= cnt Then
    cnt = 0
  End If
End Sub


>>945
それだとcntが32768でオーバーフローになる

951:デフォルトの名無しさん
12/01/14 16:29:09.18
VisualBasicEditor(VB6 や OfficeVBA のエディタ部分)の
初期フォントの決定ルールを教えて欲しいです。分かる方、いますでしょうか。
日本語環境なら、MS ゴシック、英語環境ならCourier Newのようです。

オプションダイアログからフォント設定を変更した後ならレジストリに記録されてましたが、
インストール後からフォント変更するまでは、レジストリには項目がありませんでした。

知りたい理由は、VisualBasicEditor上に同じフォントで文字を描画したいからです。
同じフォントで描画ができればいいので、稼働中のVisualBasicEditorのフォント名などの情報や
HFONT、LOGFONTなどを取得する方法がありましたら、そちらの方が適切に思うのですが、
VBEウィンドウに対してGetDC、GetWindowDCした後、GetTextFaceなどでは駄目でした。

初期フォントや稼働中フォントの取得方法が分かる方、どうぞよろしくお願いします。

952:デフォルトの名無しさん
12/01/14 16:58:49.24
ここってやっぱりVB.NET扱ってませんよね(´・ω・`)?

953:デフォルトの名無しさん
12/01/14 18:48:29.76
>>952
扱ってたら>>1に「VB~6.0の」なんて書いてありませんよね。日本語理解できてますか(´・ω・`)?

954:デフォルトの名無しさん
12/01/14 19:18:03.31
>>953
いるよねぇ。こういう一言多いやつ

955:デフォルトの名無しさん
12/01/14 19:34:06.91
やっぱり扱ってませんでしたか
お騒がせしました(´・ω・`)

956:デフォルトの名無しさん
12/01/14 20:21:19.59
>>955
もう見てないと思うが、.netはここ

VB.NET質問スレ(Part38)
スレリンク(tech板)

957:デフォルトの名無しさん
12/01/27 04:15:41.25
>>951
VBインストール直後はフォント情報がレジストリにないということは
レジストリ読んでみて、登録されてなかったら、そのデフォルトフォントにすればいいのでは?

レジストリ読むAPIはAPIビューアの定義は間違いだらけだから気をつけて
あれってVB5の時から間違ったままだから、初心者に諦めさせるように故意に間違えてるんだろか

958:デフォルトの名無しさん
12/01/27 09:32:31.10
APIの引数はByVal As Longで宣言して
StrPtrとVarPtrで渡す時代

959:デフォルトの名無しさん
12/01/28 00:24:21.02
>>957
レス感謝です。もうレスは無いかと半ば諦めてました。

今のところ、まずはレジストリから取得するようにしています。
デフォルトフォントはOSの言語で決まるようだったので、できれば決め打ちではなく、
VB6と同じような何らかの決定ルールに従いたいと思ってました。
(英語版VB6を日本語版WinXPで試したところ、MS ゴシックがデフォルトフォントになりました)

詳細は読めなかったのですが、中国のサイトでソフトが紹介されているのを見つけたので、
少数ながら、海外にもユーザーがいるみたいなので、それもフォントを決め打ちにしたくない理由の1つです。

色々試してみて、どうやらレジストリから取得しているわけではなさそうなのですが…。

960:デフォルトの名無しさん
12/01/28 08:35:49.31
そうねぇ、外国のOSならMSゴシックはないよねぇ
とするとWindowsのどこかに・・

フォント名が定義されてるレジストリは余りないようだけど
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Console\TrueTypeFont
あたりはどうでしょ
こんなのを別のフォント名に変えてVBを新規インストールしてみて
その変えたフォントになるかどうか
ま、人に配布するソフトはそんな推測で作っちゃいけないよね

961:デフォルトの名無しさん
12/01/30 21:50:30.26
>>960
VB6新規インストールは行っていないものの、
レジストリ上の"MS ゴシック"、"MS Gothic"、"msgothic.ttc"を
別のものに変えて試してみたのですが空振りでした。

色々試してみたところ、VB6については、OSの言語に依存しているのではなく、
[コントロールパネル]-[地域と言語のオプション]-[詳細設定]-[Unicode 対応でないプログラムの言語]
の設定に依存していることが分かりました。
また、この項目で「中国語(香港)、(マカオ)、(シンガポール)」を選択すると、
VBEで使用するフォントが必要な状況になるとVB6が強制終了してしまうことが分かりました。
内部でベタで持ってるのかもしれませんね…。

とりあえず、レジストリから取得、取得できない場合はベタ書きにしようと思います。

962:デフォルトの名無しさん
12/01/30 23:31:01.21
961に誤りがあったので、誰かが変に参考にしないように訂正を。

[Unicode 対応でないプログラムの言語]の設定を
「中国語(香港)、(マカオ)、(シンガポール)」にするとVB6が強制終了すると書きましたが
それは英語版VB6の話で、日本語版VB6の場合は問題ありませんでした。

963:デフォルトの名無しさん
12/01/31 21:47:40.78
会社で仕事関係の一切の情報持ち出し、持込禁止になってから止めてたんだけど、PCにVB6インストールしようかなあ。
久しぶりに触りたくなってきた。


最新レス表示
レスジャンプ
類似スレ一覧
スレッドの検索
話題のニュース
おまかせリスト
オプション
しおりを挟む
スレッドに書込
スレッドの一覧
暇つぶし2ch