今日は、宜しくお願いします。
環境:Windows XP SP2 / MFC
シングルダイアログベースの実装で、レイアウトは、このようになっています
※ ダイアログのレイアウト
OKボタン
キャンセルボタン
カスタムコントロール
水平スクロールバーコントロール
※ 動作概要
http://support.microsoft.com/kb/183528/ja
http://support.microsoft.com/kb/403860/ja
を参考に、カスタムコントロールに画像を表示し(画像描画処理は実装済み)
スクロールバーを動かすことで、画面に表示しきれない部分をスクロールさせたい。
※ 手順
カスタムコントロールのプロパティーから
public:
afx_msg void OnHScroll(UINT nSBCode, UINT nPos, CScrollBar*
pScrollBar);
を自動的に追加し、行いたい処理の実装を加える。
※ 問題点
スクロールバーをマウスで移動しても、変化が起こりません。
OnHScroll()に、ブレークを貼って、挙動を見ると、イベントが通知されていないようで
す。
※ お聞きしたいこと
スクロールバーと、カスタムコントロールの動作をリンケージさせる場合の、手順は
これで間違っていないでしょうか?
スクロールイベントを受け取るのはスクロールバーコントロールなので、OnHScroll()を
カスタムコントロールではなく、スクロールバーコントロールに追加してください。
と思ったら、紹介されている
http://support.microsoft.com/kb/183528/ja
http://support.microsoft.com/kb/403860/ja
には、親ウインドウのクラスにハンドラを追加しろ、って書いてあった。
従ってOnHScroll()を追加するのはカスタムコントロールではなく、ダイアログクラスに
なります。
maruさん、ありがとうございます。
>>カスタムコントロールではなく、スクロールバーコントロールに追加してください。
MSDNの内容はそういうことだったんですね(^^;
カスタムコントロールもCWndクラスを継承しており故に、OnHScrollメッソッドがあるの
で
てっきりそこに、実装したら良いのかと、勘違いしてました。
解決できました。