目次に戻る
一覧ページに戻る
CPSlider::AttachFocusEvent
2001/12/26 update.
スライダーにフォーカスが入ったときのコールバック関数を設定します。

書式

  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