VC++6.0 でプロを作っています
エディットボックッス IDC_TE3 に1文字入力して( '0'か '7')スタティックテキスト
IDC_LB1 に表示させたいのですが一回目はうまくいくのに2回目はうまく表示しない
のは何故でしょうか。
どなたか教えてください。
void CGPS_16Dlg::OnChangeTE3()
{
p=(CEdit*)GetDlgItem(IDC_TE3);
p->GetWindowText(tmp);
if(strcmp(tmp,0)==0){
SetDlgItemText(IDC_LB1,0);
}
if(strcmp(tmp,7)==0){
SetDlgItemText(IDC_LB1,7);
}
}
2回目はどううまくいかないのか、どんな挙動になるのか、
もっと詳しい情報をお願いします。
VC++ MFC ダイアログボックスでプログラムを作っています。
説明が不十分でした。
IDC_TE3 でカーソルが点滅している時、'0'を入力すると'0'を表示するのですが
続けて '7'を入力しても表示は '0'のままです。
念のためにお聞きしますが
0 を入力したあと、 0 を削除(消して) 7 を入力していますよね?
はずしていたら無視して下さい。
>IDC_TE3 でカーソルが点滅している時、'0'を入力すると'0'を表示するのですが
>続けて '7'を入力しても表示は '0'のままです。
で
「続けて '7'を入力しても」の時は'0'を削除しそれから'7'を入力していますか?
'0'を削除しないと tmp は'07'となり比較した時に違うのでIDC_LB1に反映しません。
あと「点滅している時」って何でしょう?
「点滅している時」のみ動作するようになっていませんか?
以上です
IDC_TE3 のエディットボックスに入力した数字が表示されないので
'0'に続けて'7'を入力していました。
BACK SPACE で一文字消してから、入力するとうまくいきます。
この BACK SPACE で一文字消さずに、プログラムで消すことは出来ないでしょうか
IDC_TE3 にメンバー変数を割り付け(m_TE3)
プログラムに以下の二行を追加で解決しました。
コメント有り難うございました。
void CGPS_16Dlg::OnChangeTE3()
{
p=(CEdit*)GetDlgItem(IDC_TE3);
p->GetWindowText(tmp);
if(strcmp(tmp,0)==0){
SetDlgItemText(IDC_LB1,0);
}
if(strcmp(tmp,7)==0){
SetDlgItemText(IDC_LB1,7);
}
==> m_TE3=";
==> UpdateData(FALSE);
}
メンバ変数でもいいですけど、
SetDlgItemText(IDC_TE3, ");
とか、
p->SetWindowText(");
でよいのでは?