スライダーにフォーカスが入ったときのコールバック関数を設定します。
書式
typedef void (* LP_SLIDERPROC)(CPSlider *);
CP_BOOL AttachFocusEvent(LP_SLIDERPROC lpProc);
|
パラメータ
lpProc
「void xxxx(CPSlider *)」型のstatic関数を指定します。
ここで指定したコールバック関数に対し、スライダーにフォーカスが入った場合のイベント処理を行います。
解説
スライダーにフォーカスが入った場合のコールバック関数を設定します。
なお、コールバック関数は必ずstaticの静的関数である必要があります。
コールバックを解除する場合は「DetachFocusEvent( )」を呼び出してください。
例
ウィンドウ(ダイアログ)を生成して、その中にスライダーを配置します。
CPWindow win;
CPSlider slider;
CPLabel lab;
//スライダーのフォーカスイベントを受け取る
static void OnSliderFocus(CPSlider *lpSlider)
{
....
}
//スライダーのチェンジイベントを受け取る
static void OnSliderChange(CPSlider *lpSlider)
{
int pos;
char szBuff[128];
//スライダーの値を取得
pos=lpSlider->GetPosition();
//ラベルの文字列を更新
sprintf(szBuff,"%d",pos);
lab.SetText(szBuff);
//ラベルの再描画
lab.Repaint();
}
void main()
{
//ダイアログを生成する
win.Clear();
win.CreateNewDialog("TestDialog",120,120,300,200);
//スライダーの位置・サイズを指定
slider.SetBounds(10,10,120,40);
//フォーカスイベントのコールバック関数指定
slider.AttachFocusEvent(OnSliderFocus);
//チェンジイベントのコールバック関数指定
slider.AttachChangeEvent(OnSliderChange);
//スライダーをCPWindowに結びつける
win.Add(&slider);
//ラベルの位置・サイズを指定
lab.SetBounds(134,20,20,20);
lab.SetAlign(CP_ALIGN_CENTER);
//ラベルをCPWindowに結びつける
win.Add(&lab);
//ダイアログの表示・イベントループの開始
win.DoModal();
}
この例では、スライダーにフォーカスが入った場合に「OnSliderFocus」関数が呼ばれます。
スライダー値が変更された場合には「OnSliderChange」関数が呼ばれます。
「OnSliderChange」内で、ラベル「lab」に現在のスライダー位置情報を表示しています。

ビルド時に必要なファイル
ライブラリ
| :CPartsLib.lib (Macintoshの場合は、CPartsCW.a)
|
ヘッダ
| :CPSlider.h
|
関連リンク
CPSliderクラス
CPSlider::DetachFocusEvent
CPSlider::AttachChangeEvent
CPSlider::DetachChangeEvent