動いたスクロールバーを識別したい – プログラミング – Home

動いたスクロールバーを識別したい
 
通知
すべてクリア

[解決済] 動いたスクロールバーを識別したい

固定ページ 1 / 2

Kon
 Kon
(@Kon)
ゲスト
結合: 20年前
投稿: 89
Topic starter  

はじめまして。Konと申します。よろしくお願いします。
使用PCはWinXP、MicrosoftVisualC++6.0 を使用しています。

MFC で、基本クラスをCFormView にしてプロジェクトを作りました。
スクロールバーとエディットボックスを連動したいと考えています。
1セットしか無い場合は、

void CInterFaceView::OnHScroll(UINT nSBCode, UINT nPos, CScrollBar*
pScrollBar)
{
 int pos;

 pos=pScrollBar->GetScrollPos();
 switch(nSBCode){(中略)}

 UpdateData(true);
 m_【エディットボックス】.Format(%d,m_【スクロールバー】);
 UpdateData(false);

 pScrollBar->SetScrollPos(pos);
 CFormView::OnHScroll(nSBCode, nPos, pScrollBar);
}

でリアルタイムで動きました。

現在は、18セットあります。
スクロールバーが動くたびに、全てのエディットボックスを更新するのは
合理的では無いと思いますので、動いたスクロールバーを特定した後
エディットボックス1つを更新するようにしたいのですが、
なにか方法はありませんでしょうか?

ちなみに、エディットボックスとスクロールバーのメンバ変数は
m_edtext_par[i]、m_scroll_par[i]として、配列にすることまでは成功してます。

C++初心者で、話の通りが悪いかもしれませんが、
是非お力をお借り致したく、よろしくお願いします。


引用未解決
トピックタグ
επιστημη
 επιστημη
(@επιστημη)
ゲスト
結合: 22年前
投稿: 600
 

第3引数pScrollBarで判別できるんちゃいますか?


返信引用
Kon
 Kon
(@Kon)
ゲスト
結合: 20年前
投稿: 89
Topic starter  

確かに pScrollBar はスクロールバーを特定していますが、
起動するたびに違う値が返ってきます。
しかも、規則的に数値が増えていないようです。
デバッグの方法が未熟なのかもしれません。

もうすこし、具体的におわかりになりませんか?


返信引用
επιστημη
 επιστημη
(@επιστημη)
ゲスト
結合: 22年前
投稿: 600
 

CWnd::GetDlgCtrlID() によって、スクロールバーのコントロールIDが得られませんか?


返信引用
PATIO
(@patio)
Famed Member
結合: 4年前
投稿: 2660
 

いえ、pScrollBarはCScrollBar*なのですから
そこからウインドウハンドルを参照してm_scroll_par[i]の中のウインドウハンドルと
つき合わせて比較してみるとか、方法はいくらでもあるのでは?
その値そのもので判断するのではなくてその値を利用して得られる情報にまで目を向けま
しょう。


返信引用
PATIO
(@patio)
Famed Member
結合: 4年前
投稿: 2660
 

逆に言うとCWnd*とか、CScrollBar*と言うようにコントロールクラスのポインタが
あるんだから何とでもなるぞと考えられるようになると言いのですけれど。
実際の話、コントロールクラスのポインタがあればたいていの操作は出来ますからね。


返信引用
Kon
 Kon
(@Kon)
ゲスト
結合: 20年前
投稿: 89
Topic starter  

申し訳ありません。
ちょっと話が難しくて、ついて行けなかったのですが、
1,pScrollBarからウインドウハンドルを特定できる。
2,ウインドウハンドルはメンバ変数を呼び出せる。
という理解で間違いありませんか?

実は、ポインタがまだ怪しいのと、ウインドウハンドルがよく分からなかったので、
実際の方法が全く思いつきませんでした。


返信引用
επιστημη
 επιστημη
(@επιστημη)
ゲスト
結合: 22年前
投稿: 600
 

>1,pScrollBarからウインドウハンドルを特定できる。

yes. あるいはcontrol-IDを。

>2,ウインドウハンドルはメンバ変数を呼び出せる。

何言ってるかわかんね。


返信引用
Kon
 Kon
(@Kon)
ゲスト
結合: 20年前
投稿: 89
Topic starter  

>>2,ウインドウハンドルはメンバ変数を呼び出せる。
>何言ってるかわかんね。

最終的には、スクロールバーのメンバ変数が配列で何番目か知りたいので
ウインドウハンドルから、メンバ変数が分かるのかと思いました。


返信引用
επιστημη
 επιστημη
(@επιστημη)
ゲスト
結合: 22年前
投稿: 600
 

> ウインドウハンドルから、メンバ変数が分かるのかと思いました。

わかるでしょ。同じハンドルを持ったヤツを探し出せばいいんだから。


返信引用
Kon
 Kon
(@Kon)
ゲスト
結合: 20年前
投稿: 89
Topic starter  

>わかるでしょ。同じハンドルを持ったヤツを探し出せばいいんだから。
あ、やっぱり分かるんですね。


返信引用
επιστημη
 επιστημη
(@επιστημη)
ゲスト
結合: 22年前
投稿: 600
 

>>2,ウインドウハンドルはメンバ変数を呼び出せる。

あー、これはつまり

2,ウインドウハンドルからどのメンバ変数かを割り出せる

と言いたかったのか。ならばそのとおり。

# てゆっか、最初の表現じゃわかんねぇよふつー


返信引用
Kon
 Kon
(@Kon)
ゲスト
結合: 20年前
投稿: 89
Topic starter  

すみません。
あんまり他の人とプログラムの話をしないものですから
なんと表現して良いのか、サッパリなのです。
容赦なく、指摘してください!

いま、pScrollBarからウインドウハンドルを特定しようとしています。
具体的な記述を教えて頂けませんか?

自分で調べるのが良いのでしょうが、少々急いでいるので、
お手伝い下さい。


返信引用
επιστημη
 επιστημη
(@επιστημη)
ゲスト
結合: 22年前
投稿: 600
 

> いま、pScrollBarからウインドウハンドルを特定しようとしています。
> 具体的な記述を教えて頂けませんか?

# C++に不慣れとミタ。

CSCrollBarはCWndの派生クラスです。
CWndのメソッドなりメンバ変数を眺めれば必ず見つかります。
# 魚はあげないけど、魚の獲り方なら教えてあげる。


返信引用
Kon
 Kon
(@Kon)
ゲスト
結合: 20年前
投稿: 89
Topic starter  

># C++に不慣れとミタ。
愚痴っても仕方ないですが、不慣れなんてものじゃ無いです。

CScrollBar* と*が後ろに付いているのは、
コントロールクラスのポインタだからですか?

CWnd::GetDlgCtrlID() を使えば良いのでしょうか?
でも、どうやって使ったら良いのか、まだ考え中です。


返信引用
固定ページ 1 / 2

返信する

投稿者名

投稿者メールアドレス

タイトル *

プレビュー 0リビジョン 保存しました
共有:
タイトルとURLをコピーしました