ダイアログバーに配置したスライダー動作を得るには

[戻る]
onajihoko 2004/07/20(火) 01:31:54
こんばんわ

VisualStudio6.0(VC++) + SDI + WinXp
(ツールバーの設定をIE風にして)
アプリケーションを作成しています。

今、ダイアログバーにスライダーを配置し、OnHScrollで動作を得ようと
したのですが、反応がありませんでした。(デバックでもとんできません。)
どうしたら、取得できるのでしょうか?


また、上の質問とは直接関係はありませんが、
CDC *pDC = GetDC();
とした場合、pDCには、何のDCが入っているのでしょうか?
クライアント領域に表示された画像のDCでしょうか?

以上、アドバイスいただけたら幸いです。
よろしくお願いいたします。

シャノン 2004/07/20(火) 02:50:59
> 今、ダイアログバーにスライダーを配置し、OnHScrollで動作を得ようと
> したのですが、反応がありませんでした。(デバックでもとんできません。)

OnHScroll をどのクラスで捕まえようとしましたか?
フレームやビューで捕まえようとしても無理な気がします。
ダイアログバーで捕まえないと。

で、ダイアログバーの元になっているダイアログのクラスを作り、
OnHScroll を捕まえるようにしてみましたが…失敗。
考えてみたら、この作ったクラスのインスタンスが作られてない。
そこで、CDialog から派生していたのを CDialogBar から派生するように書き換え、
フレームのメンバにあるダイアログバークラスを、CDialogBar からこのクラスに変更し
たところ、捕まえられるようになりました。
OnInitDialog が呼ばれていないせいか、DDX が利きませんけど。

> CDC *pDC = GetDC();
> とした場合、pDCには、何のDCが入っているのでしょうか?

それを呼び出した場所によって変わります。
上記コードは

CDC *pDC = this->GetDC();

の略です。
this がフレームであればフレームの DC だろうし、ダイアログであればダイアログの 
DC だろうし。

onajihoko 2004/07/29(木) 00:39:34
[[解決]]
ダイアログバーのスライダーに関しては、Notify関数で解決いたしました。
アドバイスどうもでした。

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