環境はWinXP VisualStudio.NET2003 VC++ MFC です。
また質問です。
エディットボックスに「ここに入力してください」と表示されていて、クリックするとテ
キストが消えてそのまま入力できる機能、最初の文字を自分で消さなくてもいいようにし
たいのですが、方法がわかりません。
単なる思い付きですけれど、
スタティックコントロールをちょうどその位置になるように配置しておいて
クリックされたら消すとかでは駄目ですかねぇ。
あとは、エディットコントロールの派生クラスを作って
何も入力されていない状態でフォーカスが無い状態なら
「ここに入力してください」と表示するようにプログラムするとか。
あくまでも取っ掛かりの話なので参考程度に。
PATIOさんのおっしゃるとおり、
CEditの子クラスを作成して、
そのクラスのOnKillFocus()で現在のテキストを保存して、
SetWindowText( _T( ここに入力してください ) );
として、
OnEnSetfocus()で保存しておいた値をSetWindowText()すればよい
と思います。
ソースにすると、
void CXXXEdit::OnEnSetfocus()
{
this->SetWindowText( m_strBackup );
}
void CXXXEdit::OnKillFocus(CWnd* pNewWnd)
{
CEdit::OnKillFocus(pNewWnd);
this->GetWindowText( m_strBackup );
this->SetWindowText( _T( ここに入力してください ) );
}
って感じですかね。
ちょっと気になったのですが
そのエディットボックスはどのように作成されてますか?
最初にメンバ変数(m_str)に「ここに入力してください」を入れておきます。
あとは回答のようにしました。
m_str = ここに入力してください;
void CXXXXView::OnEnSetfocusEdit()
{
m_str = ";
UpdateData(FALSE);
}
void CXXXXView::OnEnKillfocusEdit()
{
UpdateData(TRUE);
if(m_str == "){
m_str = ここに入力してください;
UpdateData(FALSE);
}
}
解決しました。
ありがとうございました。