クリックするとテキストが消える機能 – プログラミング – Home

クリックするとテキストが消える機能
 
通知
すべてクリア

[解決済] クリックするとテキストが消える機能


nepiaa
 nepiaa
(@nepiaa)
ゲスト
結合: 17年前
投稿: 35
Topic starter  

環境はWinXP VisualStudio.NET2003 VC++ MFC です。
また質問です。

エディットボックスに「ここに入力してください」と表示されていて、クリックするとテ
キストが消えてそのまま入力できる機能、最初の文字を自分で消さなくてもいいようにし
たいのですが、方法がわかりません。


引用未解決
トピックタグ
PATIO
(@patio)
Famed Member
結合: 3年前
投稿: 2660
 

単なる思い付きですけれど、
スタティックコントロールをちょうどその位置になるように配置しておいて
クリックされたら消すとかでは駄目ですかねぇ。

あとは、エディットコントロールの派生クラスを作って
何も入力されていない状態でフォーカスが無い状態なら
「ここに入力してください」と表示するようにプログラムするとか。

あくまでも取っ掛かりの話なので参考程度に。


返信引用
CMSK
 CMSK
(@CMSK)
ゲスト
結合: 16年前
投稿: 5
 

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( ここに入力してください ) );
}
って感じですかね。


返信引用
rin
 rin
(@rin)
ゲスト
結合: 18年前
投稿: 112
 

ちょっと気になったのですが
そのエディットボックスはどのように作成されてますか?


返信引用
nepiaa
 nepiaa
(@nepiaa)
ゲスト
結合: 17年前
投稿: 35
Topic starter  

最初にメンバ変数(m_str)に「ここに入力してください」を入れておきます。
あとは回答のようにしました。

m_str = ここに入力してください;
void CXXXXView::OnEnSetfocusEdit()
{
m_str = ";
UpdateData(FALSE);
}
void CXXXXView::OnEnKillfocusEdit()
{
UpdateData(TRUE);
if(m_str == "){
m_str = ここに入力してください;
UpdateData(FALSE);
}
}

解決しました。
ありがとうございました。


返信引用

返信する

投稿者名

投稿者メールアドレス

タイトル *

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