エディットボックスの値がスクロールバーに行くにはどうしたらいいんですか – プログラミング – Home

エディットボックスの値がスクロールバー...
 
通知
すべてクリア

[解決済] エディットボックスの値がスクロールバーに行くにはどうしたらいいんですか


まりお
 まりお
(@まりお)
ゲスト
結合: 19年前
投稿: 16
Topic starter  

エディットボックスとスクロールバーをリンクさせて色を表示させていのですが教えて
ください。スクロールバーからエディットボックスに値が行くんですが、逆ができませ
ん。エディットボックスに値を入れてもスクロールバーに反映しません。どうしたらい
いのか教えて下さい。これがソースです。

void C図形描画Dlg::OnBnClickedButton2()
{
// TODO: ここにコントロール通知ハンドラ コードを追加します。
CWnd* myPICT2=GetDlgItem(IDC_PICT2);
CClientDC myDC(myPICT2);
int ed;

CRect myRECT;
myPICT2->GetClientRect(myRECT);

CScrollBar* sbar1=(CScrollBar*)GetDlgItem(IDC_SCROLLBAR_R);
CScrollBar* sbar2=(CScrollBar*)GetDlgItem(IDC_SCROLLBAR_G);
CScrollBar* sbar3=(CScrollBar*)GetDlgItem(IDC_SCROLLBAR_B);

CPen penBlack(PS_SOLID,1,RGB(0,0,0));
CPen* oldPEN=myDC.SelectObject(&penBlack);

CBrush myBrush, * oldBrush;
int red=0,green=0,blue=0;

red=sbar1->GetScrollPos();
green=sbar2->GetScrollPos();
blue=sbar3->GetScrollPos();

myBrush.CreateSolidBrush(RGB(red,green,blue));
oldBrush=myDC.SelectObject(&myBrush);

myDC.Rectangle(myRECT);
myDC.SelectObject(oldPEN);
myDC.SelectObject(oldBrush);
}

void C図形描画Dlg::OnHScroll(UINT nSBCode, UINT nPos, CScrollBar* pScrollBar)
{
// TODO: ここにメッセージ ハンドラ コードを追加するか、既定の処理を呼
び出します。
int pos;
wchar_t co[35];
pos=pScrollBar->GetScrollPos();

switch(nSBCode){
case SB_LEFT:
pos=0;break;
case SB_RIGHT:
pos=255;break;
case SB_LINELEFT:
pos=pos-1;break;
case SB_LINERIGHT:
pos=pos+1;break;
case SB_PAGELEFT:
pos=pos-10;break;
case SB_PAGERIGHT:
pos=pos+10;break;
case SB_THUMBPOSITION:
pos=nPos;break;
case SB_THUMBTRACK:
break;
case SB_ENDSCROLL:
break;
}
if(pos<0) pos=0;
if(pos>255) pos=255;
pScrollBar->SetScrollPos(pos);

red=m_sr.GetScrollPos();
swprintf(co,L%d,red);
m_red.SetWindowTextW(co);
green=m_sg.GetScrollPos();
swprintf(co,L%d,green);
m_green.SetWindowTextW(co);
blue=m_sb.GetScrollPos();
swprintf(co,L%d,blue);
m_blue.SetWindowTextW(co);

CDialog::OnHScroll(nSBCode, nPos, pScrollBar);
}


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

1. R,G,Bそれぞれのテキストボックスにある文字列を得る(GetWindowText)
2. [1]で得た文字列を数値に変換する
3. [2]で得られた数値をR,G,Bのスクロールバーに設定する。
4. 上記 C図形描画Dlg::OnBnClickedButton2 を呼び出す


返信引用
まりお
 まりお
(@まりお)
ゲスト
結合: 19年前
投稿: 16
Topic starter  

2番目まではできました。ちなみに私はGetDlgItemIntを使ってるのですが、
3番目ができません。どうやってスクロールバーに設定したらいいんでしょうか。
教えていただけませんか。まだ始めたばかりでわからないのでお願いします。


返信引用
通りすがり
 通りすがり
(@通りすがり)
ゲスト
結合: 24年前
投稿: 92
 

>どうやってスクロールバーに設定したらいいんでしょうか。
CScrollBarのヘルプは読んだのか?
何でもかんでも聞く前にちゃんとヘルプがあるんだから読みましょう。
http://msdn2.microsoft.com/ja-JP/library/3azzex5f.aspx

#取得でGetScrollPosとしているのだから、Setもあるだろうというふうには思いませんで
したか?

>まだ始めたばかりで~
まずは自分で調べずに、いきなり質問する理由になってませんよ


返信引用
まりお
 まりお
(@まりお)
ゲスト
結合: 19年前
投稿: 16
Topic starter  

Setを使うのはわかるんですが、自分で作ってもエディットボックスに入れた数値がスク
ロールバーに反映しなくてどうしたらいいのかわからず聞きました。すみません。
Button2の最後の所に、m_red.GetDlgItemInt(IDC_EDIT1);って入れた後がどうしてもで
きなくて教えていただけませんか。


返信引用
まりお
 まりお
(@まりお)
ゲスト
結合: 19年前
投稿: 16
Topic starter  

あのred=m_sr.SetScrollPos(IDC_EDIT1);を入れたところボタン2とスクロールバーは連
動したのですがエディットボックスの数値がスクロールバーに行ってくれませんどうし
たらいいんでしょうか?すみません初歩的なことばかり聞いて。
もう一つ質問があるのですが三ヶ月で言語を3つも習得させようとする会社を皆さんどう
思いますか


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

void どこかの::ボタンが押された()
{
CScrollBar* sbar = static_cast<CScrollBar*>(GetDlgItem(IDC_SCROLLBAR1));
int n = GetDlgItemInt(IDC_EDIT1); // TextBoxから読み取って
sbar->SetScrollPos(n); // ScrollBarにセットする
}

こんだけ。


返信引用
通りすがり
 通りすがり
(@通りすがり)
ゲスト
結合: 24年前
投稿: 92
 

メンバ変数が何の断りも無くポンポン出てくるのは…
なのでm_~は使わずに書く

CScrollBar* sbar1=(CScrollBar*)GetDlgItem(IDC_SCROLLBAR_R);
↑これが赤のスクロールバーかな?
SetScrollRangeはすでにされているとして

red = GetDlgItemInt(IDC_EDIT1);
sbar1->SetScrollPos(red);

でスクロールボックスは移動するはずだが


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

> 三ヶ月で言語を3つも習得させようとする会社を皆さんどう思いますか

非常に好感が持てます。
もっとイジメろ! と応援します。
それがプロってもんです。

講師には胸張って「俺たちに習得させたいのなら教えろ」と訊きまくればいいんです。
教えてくれなかったら堂々と文句言えばいい。

講師はそれらを習得させることで金をもらっているのだから、できるまで食い下がって
講師をクタクタにすればいい。


返信引用
まりお
 まりお
(@まりお)
ゲスト
結合: 19年前
投稿: 16
Topic starter  

解決しました。答えてくれたお二人ありがとうございます。
なんとお礼を言ったらよいか。
本当にありがとうございます。でもred=m_sr.SetScrollPos(IDC_EDIT1)では反映してく
れないんですか。よかったら教えてください。


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

> でもred=m_sr.SetScrollPos(IDC_EDIT1)では反映してくれないんですか。

マニュアルを読みましょう。まったくもってトンチンカンなコードです。


返信引用
通りすがり
 通りすがり
(@通りすがり)
ゲスト
結合: 24年前
投稿: 92
 

IDC_EDIT1はコントロールを識別するためのID(defineされた値)であって、
エディットボックスの中身ではない


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

とにかく、一つ一つのコードが何をやっているのか
一つ一つに引数が何を意味しているのかをきちんと理解するまで
調べるなり、講師に聞くなりしましょう。
こんなコードを書けば、なんとなく動いたからいいやでは駄目です。
それでは全く応用が利きません。
少なくともプロとしてやっていくのであれば、
自分が書いたコードが全て理解できていないといけません。
精進しましょう。


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

誤字訂正。

誤)
一つ一つに引数が何を意味しているのかをきちんと理解するまで

正)
一つ一つの引数が何を意味しているのかをきちんと理解するまで


返信引用

返信する

投稿者名

投稿者メールアドレス

タイトル *

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