文字を動かすには?

解決


Bit  2001-11-12 06:23:31  No: 103756

RichTextBoxコントロールで<MARQUEE>タグのように文字をうごかすことはできるのでしょうか?
できるのならば教えてください。お願いします。


たかみちえ  2001-11-12 08:16:41  No: 103757

うーん、マーキーするならTextboxかPictureBoxがいいと思いますけど…。
それはとにかくとして、TextBoxでやる場合、
先頭の文字をとって、一番後ろにくっつけて、
先頭の文字をとって、一番後ろにくっつけて…。
  を適当な間隔で繰り返します
ただちょっとしかたないですけど、全角半角の混じった文字をマーキーすると、
速度がヘンですね^^;

  あと、ちょっとめんどくさいですけど、PictureBoxとかお勧めです。
  理論上はですけど、文字列を見えないフォームに文字をプリントし、
それの表示したい位置から表示したい位置までの部分をPaintPictureかBitBlt系APIでコピー
それを少しずつずらしていって…。という風にやれば、
TextBoxでやるのなんか比べ物にならないほどいいできのができると思います。

  それと、これらの動作は、Timerコントロールで動かすのはあんまりお勧めできません。
(他のソフトが使ってるTimerコントロールに影響されて速度が変になるみたいです…)
作りたてで、しかもTimerコントロールよりできることがすごく少ないですけど、
下のを使ってみてください

Private Declare Function SetTimer Lib "user32" (ByVal hWnd As Long, ByVal nIDEvent As Long, ByVal uElapse As Long, ByVal lpTimerFunc As Long) As Long
Private Declare Function KillTimer Lib "user32" (ByVal hWnd As Long, ByVal nIDEvent As Long) As Long
Dim id As Long, name As String, obj As Object
Public Function TimerProc(hWnd As Long, uMsg As Long, idEvent As Long, dwTime As Long) As Long
    'タイマープロクレス
    CallByName obj, name, VbMethod, hWnd, uMsg, idEvent, dwTime
End Function
Public Sub DeCreateTimer()
    'タイマーを破棄します
    On Error Resume Next
    KillTimer obj.hWnd, id
End Sub
Public Sub CreateTimer(HasObject As Object, Optional CallBackName As String = "TimerProc", Optional Interval As Long = 1)
    'タイマーを作ります、Timerコントロールよりは正確かも
    'HasObject…コールバックプロジージャを持っているオブジェクト
    'CallBackName…コールバックプロジージャの名前
    'Interval…そのインターバル
    '
    'コールバック関数は以下のようになります。
    'Public Sub TimerProc(hWnd As Long, Message As Long, id As Long, TickTime As Long)
    'hWnd…タイマー作成もとハンドル
    'Message…タイマーから送られるメッセージ
    'id…タイマーのID
    'TickTime…Windowsが起動してからの時間
    Set obj = HasObject
    name = CallBackName
    id = SetTimer(obj.hWnd, Int(Rnd * 65535) + 1, Interval, AddressOf TimerProc)
End Sub

Timerコントロールよりは正確(?)です。たぶん。
本当はもうちょっと正確なタイマーがあるんですけどね^^;


Bit  2001-11-21 02:24:55  No: 103758

いつもソースまでつけていただいてありがとうございます


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

※Google reCAPTCHA認証からCloudflare Turnstile認証へ変更しました。






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