HSPポータル
サイトマップ お問い合わせ


HSPTV!掲示板


未解決 解決 停止 削除要請

2009
0108
NAVEスクロールバーの使用4未解決


NAVE

リンク

2009/1/8(Thu) 23:48:31|NO.22524

スクロールバーをセットすることはできるのですが、
マウスでスクロールされた値を取得したり、
スクロールバーのスクロールの状態を保つことができません。
どうすればいいか教えてください。
*oncmd + wparam, lparamの習得で何とかできないかとしたのですが
無理でした。(きっとやり方があると思うのにな・・・)



この記事に返信する


hspail

リンク

2009/1/9(Fri) 07:19:37|NO.22527

まずは検索してみてください。
http://www.winapi-database.com/Message/WM/WM_HSCROLL.html
http://www.winapi-database.com/Message/WM/WM_VSCROLL.html
http://msdn.microsoft.com/ja-jp/library/cc411068.aspx


スクロールバーの作成は省略しております。

#include "user32.as" // 下位ワード #define ctype LOWORD(%1) (%1 & $FFFF) // スクロールバーの対象 #define SB_HORZ 0 // 標準水平スクロールバーを指定 #define SB_VERT 1 // 標準垂直スクロールバーを指定 #define SB_CTL 2 // スクロールバーコントロールを指定 #define SB_BOTH 3 // 標準スクロールバーの水平・垂直両方 // 水平スクロール #define SB_LINELEFT 0 // 左へ1単位スクロール #define SB_LINERIGHT 1 // 右へ1単位スクロール #define SB_PAGELEFT 2 // 左へウィンドウの幅だけスクロール #define SB_PAGERIGHT 3 // 右へウィンドウの幅だけスクロール #define SB_THUMBPOSITION 4 // スクロールボックスを操作した #define SB_THUMTRACK 5 // スクロールボックスを操作中 #define SB_LEFT 6 // 左にスクロール #define SB_RIGHT 7 // 右にスクロール #define SB_ENDSCROLL 8 // スクロールを終了 // 垂直スクロール #define SB_LINEUP 0 // 上矢印を押した #define SB_LINEDOWN 1 // 下矢印を押した #define SB_PAGEUP 2 // 上ページアップを押した #define SB_PAGEDOWN 3 // 下ページアップを押した ;#define SB_THUMBPOSITION 4 // lParamの下位ワードにサムの位置を示す ;#define SB_THUMTRACK 5 // サム移動中 #define SB_TOP 6 // [HOME]キーが押された #define SB_BOTTMOM 7 // [END]キーが押された ;#define SB_ENDSCROLL 8 // スクロールが終了 // SetScrollInfoの設定対象 #define SIF_RANGE $0001 #define SIF_PAGE $0002 #define SIF_POS $0004 #define SIF_DISABLENOSCROLL $0008 #define SIF_TRACKPOS $0010 #define SIF_ALL (SIF_RANGE | SIF_PAGE | SIF_POS | SIF_TRACKPOS) stop // 縦スクロールされた *ON_WM_VSCROLL switch LOWORD(wParam) case SB_LINEUP ;上矢印を押した時の処理 swbreak case SB_LINEDOWN ;下矢印を押した時の処理 swbreak case SB_PAGEUP ;ページアップを押した時の処理 swbreak case SB_PAGEDOWN ;ページダウンを押した時の処理 swbreak case SB_THUMTRACK trackpos = HIWORD(wParam) ; サムの位置 // SetScrollInfoで位置を設定 si = 28, SIF_POS, 0, 0, 0, trackpos ;SCROLLINFO構造体 SetScrollInfo hWnd, SB_VERT, varptr(si), 1 swbreak swend // SetScrollInfoで位置を設定 si = 28, SIF_POS, 0, 0, 0, 100 ;SCROLLINFO構造体 SetScrollInfo hWnd, SB_VERT, varptr(si), 1 return

だいたいこんな感じです。
定数をだらだらと書いてしまってすいません。



NAVE

リンク

2009/1/9(Fri) 13:44:45|NO.22529

すいません。うまくいかないのですが・・・。
教えてもらったプログラムに
winobj "SCROLLBAR", "", , $50000000 | $1, 20, 480
oncmd gosub *ON_WM_VSCROLL, 0x0115
を足してみたのですが、配列の要素が無効といわれてしまいます。



ANTARES

リンク

2009/1/10(Sat) 00:46:10|NO.22599

ここに何か書かなければ投稿できない
#define ctype HIWORD(%1) (%1 >> 16 & $FFFF)



NAVE

リンク

2009/1/17(Sat) 22:37:04|NO.22926

あれから必死にがんばってみたのですが、
どうにもなりません。どうすればいいか教えてください。
スクロールしてもまったく反映されません。



ONION software Copyright 1997-2023(c) All rights reserved.