ab.com コミュニティ https://www.activebasic.com/forum/ |
|
スクロールバー https://www.activebasic.com/forum/viewtopic.php?t=2455 |
ページ 1 / 1 |
作成者: | t_popopo [ 2008年8月14日(木) 16:03 ] |
記事の件名: | スクロールバー |
スクロールバーの使い方がわかりません。 RADツールで横スクロールバーを配置して、 それを実行、スクロールバーをドラッグして動かし、 そして離すと、一番左端に戻ってしまいます。 何かコードを入れなければいけないようなのですが、 まったくわかりません。誰か教えてください。 |
作成者: | 7 [ 2008年8月16日(土) 02:09 ] |
記事の件名: | Re: スクロールバー |
> スクロールバーの使い方がわかりません。 考えてみればスクロールバーってあまり使わないですし、ActiveBasicでの解説って読んだ覚えがないですね。 > そして離すと、一番左端に戻ってしまいます。 たしかスクロール範囲を設定してやるとそのようなことにはならなくなります。 [ここをクリックすると内容が表示されます]
ActiveBasicでの解説読んだ覚えないし、全然更新しないのも心苦しいから久しぶりにABHelperでも更新するか...。
コード: Dim hScrollBar As HWND Dim si As SCROLLINFO si.cbSize=SizeOf(SCROLLINFO) si.fMask=SIF_RANGE Or SIF_POS Or SIF_PAGE si.nPos=0 si.nMin=0 si.nMax=255 si.nPage=1 hScrollBar=GetDlgItem(hMainWnd,HScrollBar1) SetScrollInfo(hScrollBar,SB_CTL,si,TRUE) |
作成者: | 三毛CAT [ 2008年8月18日(月) 16:38 ] |
記事の件名: | 7さんへ |
このコードを入力しても左端に戻ってしまいますが?? バージョン4.24.00 |
作成者: | 7 [ 2008年8月20日(水) 22:25 ] |
記事の件名: | Re: 7さんへ |
> このコードを入力しても左端に戻ってしまいますが?? デバッグしてみたら確かに戻っちゃいましたね!( ̄□ ̄;) レンジを設定するだけで大丈夫だったのはトラックバーだったかもしれません...。 面倒臭いながらも今度はちゃんとデバッグしながらコードを書きました。 Version 5.00.00 CP4 [ここをクリックすると内容が表示されます]
スクロールバーは面倒ですね。コード: Dim hScrollBar As HWND ' スクロールバーのレンジを設定 Function SetScrollRange(ByVal hWnd As HWND,ByVal nBar As Long,ByVal nMinPos As Long,ByVal nMaxPos As Long,ByVal bRedraw As Boolean) As Boolean Dim si As SCROLLINFO si.cbSize=SizeOf(SCROLLINFO) si.fMask=SIF_RANGE si.nMin=nMinPos si.nMax=nMaxPos Return SetScrollInfo(hWnd,nBar,si,bRedraw) As Boolean End Function ' スクロールバーの位置(つまみの)を設定 Function SetScrollPos(ByVal hWnd As HWND,ByVal nBar As Long,ByVal nPos As Long,ByVal bRedraw As Boolean) As Boolean Dim si As SCROLLINFO si.cbSize=SizeOf(SCROLLINFO) si.fMask=SIF_POS si.nPos=nPos Return SetScrollInfo(hWnd,nBar,si,bRedraw) As Boolean End Function ' スクロールバーの位置(つまみの)を取得 Function GetScrollPos(ByVal hWnd As HWND,ByVal nBar As Long) As Long Dim si As SCROLLINFO si.cbSize=SizeOf(SCROLLINFO) si.fMask=SIF_POS GetScrollInfo(hWnd,nBar,si) Return si.nPos End Function Sub MainWnd_Create(ByRef CreateStruct As CREATESTRUCT) hScrollBar=GetDlgItem(hMainWnd,HScrollBar1) SetScrollRange(hScrollBar,SB_CTL,0,255,True) End Sub Sub MainWnd_HScroll(nScrollCode As Long, nPos As Integer, hwndScrollBar As HWND) Select Case hwndScrollBar Case hScrollBar Dim pos As Long ' 操作する前のつまみの位置 pos = GetScrollPos(hScrollBar,SB_CTL) Select Case nScrollCode Case SB_LINELEFT ' つまみの位置を -1 SetScrollPos(hScrollBar,SB_CTL,pos-1,True) Case SB_LINERIGHT ' つまみの位置を +1 SetScrollPos(hScrollBar,SB_CTL,pos+1,True) Case SB_PAGELEFT ' つまみの位置を -20 SetScrollPos(hScrollBar,SB_CTL,pos-20,True) Case SB_PAGERIGHT ' つまみの位置を +20 SetScrollPos(hScrollBar,SB_CTL,pos+20,True) Case SB_THUMBPOSITION , SB_THUMBTRACK ' つまみの位置をドラッグ位置に設定 SetScrollPos(hScrollBar,SB_CTL,nPos,True) End Select ' 再描写してやらないといけない InvalidateRect(hScrollBar,ByVal NULL,True) UpdateWindow(hScrollBar) End Select End Sub エディットボックスを自作する時にちょっとお世話になったぐらいでしょうか...。 最近はWindows Mobile向けにプログラミングしてるんですが、初めてプログラミングした時にも挫折したMFCが今やっても飲み込めず、仕方ないからActiveBasicで覚えたAPIでゴリゴリ書いてます。 Windows Mobile向けのプログラミングにも役立つActiveBasic万歳(笑)(笑) |
作成者: | t_popopo [ 2008年9月15日(月) 16:08 ] |
記事の件名: | ありがとうございます |
ありがとうございました。さっそく使ってみます。 |
ページ 1 / 1 | 全ての表示時間は UTC+09:00 です |
Powered by phpBB® Forum Software © phpBB Limited https://www.phpbb.com/ |