by Sinryow » 2005年7月16日(土) 13:14
ぼのぼの さんが書きました:ただ、トラックバーは実は3つあって、どのトラックバーから
得られた値なのかがよく分からずいろいろ調べてみましたが
つまりました。
先にウィンドウハンドルを取得しておき,その値と比較するのがよいでしょう。(下のコードを参照)
ぼのぼの さんが書きました:> 対象となるトラックバーに、SendMessage()を使用して TBM_GETPOSを送信します。
お返事いただいた部分のここがよく分かりませんでした。。。
TBM_GETPOSの解説(英語) ※日本版MSDNには,TBM_GETPOSの解説が載ってないです(核爆)
下の例では,"pos"という変数に現在の位置をセットしています。
コード: 全て選択
' トラックバー3つ(TrackBar1~TrackBar3)と,スタティックテキスト1つ(Static1)を
' RADで作っているものとする。
Dim Track[ELM(3)] As HWND
(中略)
Sub MainWnd_HScroll(nScrollCode As Long, nPos As Integer, hwndScrollBar As DWord)
Dim i As Long, buf As String, pos As Long
If hwndScrollBar<>NULL Then
For i=1 To 3
If Track[i-1]=hwndScrollBar Then
pos=SendMessage(hwndScrollBar, TBM_GETPOS, 0, 0)
buf="トラックバー"+Str$(i)+"が動きました。値は"+Str$(pos)+"です。"
SetDlgItemText(hMainWnd, Static1, buf)
End If
Next
End If
End Sub
Sub MainWnd_Create(ByRef CreateStruct As CREATESTRUCT)
Track[0]=GetDlgItem(hMainWnd, TrackBar1)
Track[1]=GetDlgItem(hMainWnd, TrackBar2)
Track[2]=GetDlgItem(hMainWnd, TrackBar3)
End Sub
[quote="ぼのぼの"]ただ、トラックバーは実は3つあって、どのトラックバーから
得られた値なのかがよく分からずいろいろ調べてみましたが
つまりました。[/quote]
先にウィンドウハンドルを取得しておき,その値と比較するのがよいでしょう。(下のコードを参照)
[quote="ぼのぼの"]> 対象となるトラックバーに、SendMessage()を使用して TBM_GETPOSを送信します。
お返事いただいた部分のここがよく分かりませんでした。。。[/quote]
[url=http://msdn.microsoft.com/library/default.asp?url=/library/en-us/shellcc/platform/commctls/trackbar/messages/tbm_getpos.asp]TBM_GETPOSの解説(英語)[/url] ※日本版MSDNには,TBM_GETPOSの解説が載ってないです(核爆)
下の例では,"pos"という変数に現在の位置をセットしています。
[code]' トラックバー3つ(TrackBar1~TrackBar3)と,スタティックテキスト1つ(Static1)を
' RADで作っているものとする。
Dim Track[ELM(3)] As HWND
(中略)
Sub MainWnd_HScroll(nScrollCode As Long, nPos As Integer, hwndScrollBar As DWord)
Dim i As Long, buf As String, pos As Long
If hwndScrollBar<>NULL Then
For i=1 To 3
If Track[i-1]=hwndScrollBar Then
pos=SendMessage(hwndScrollBar, TBM_GETPOS, 0, 0)
buf="トラックバー"+Str$(i)+"が動きました。値は"+Str$(pos)+"です。"
SetDlgItemText(hMainWnd, Static1, buf)
End If
Next
End If
End Sub
Sub MainWnd_Create(ByRef CreateStruct As CREATESTRUCT)
Track[0]=GetDlgItem(hMainWnd, TrackBar1)
Track[1]=GetDlgItem(hMainWnd, TrackBar2)
Track[2]=GetDlgItem(hMainWnd, TrackBar3)
End Sub[/code]