スピンボタンを押下時のスライダバーの動作について

[戻る]
May 2005/03/15(火) 15:44:30
Windows XP Pro SP2
VC++ 6.0

現在、ダイアログベースでの開発を行っております。

1つ質問なのですが、
現在スライダバーとスピンコントロール付きのエディットボックスを
配置したダイアログがあります。

目的は、
@スライダバーを動かすと、エディットボックスの中の値が変わること。
Aスピンボタンを押下して値を変えた時にスライダバーも同様に動作すること。

@は実装できたのですが、Aに関しては実現できずにいます。

アドバイス頂けると有難いです。
宜しくお願い致します。

dairygoods 2005/03/15(火) 16:30:14
CSliderCtrl::SetPos() でスライダバーの位置を変更できます。

May 2005/03/15(火) 16:46:00
ご返答有難うございます。

アドバイスを頂いたSetPos()に関しては使用しておりまして、
現在スピンボタン押下時に作成される関数の中に下記の記述をしています。

void C3DMapTrialFreeViewDlg::OnOutofmemorySpinXXX(NMHDR* pNMHDR, LRESULT* 
pResult) 
{
    int num;
    num = m_cSpinXX.GetPos(); // 値をnumへ取得
    m_cSliderXXX.SetPos(num); // 取得した値をスライダへ反映
    *pResult = 0;
}

このような記述をしていますが、スピンボタン押下時に
そもそもこの関数自体に入っていないようです。

どうしてなのでしょうか?

dairygoods 2005/03/15(火) 17:10:34
関数名から察するに、NM_OUTOFMEMORY(メモリが足りないときの通知)
に対するハンドラのようですけど、
値の変更操作を検出する場合は、UDN_DELTAPOS ハンドラです。
クラスウィザードの設定を確認してみてください。

May 2005/03/15(火) 17:33:18
[[解決]]
dairygoodsさんのおっしゃる通りでした。
UDN_DELTAPOS のハンドラに変更したら
無事うまく行きました。

どうも有難うございました。

古いスレッドには追加発言できません。