状態分けをし、ある場合にはエディトボックスに入力ができない仕様にしたいのですが可能です
か?
PreTranslateMessage 関数を使って、
BOOL CxxxXxx::OnPreTranslateMessage(MSG* pMsg)
{
switch(pMsg->message)
{
case EN_UPDATE:
if (ある状態のとき)
{
return FALSE; // デフォルトの動作を抑止
}
}
}
これでできると思いますが...
GetDlgItem(IDC_EDIT1)->EnableWindow(条件)
状態分けとは、例えば前の画面によってモードを振り分けて、
削除モードの時はボックスに入力できないようにしたいのです。
>高一さん
う~ん、できません、お馬鹿なので・・・(T-T)
>山本さん
それも考えましたが、ボックスが灰色になってしまうので
使用するのをやめました。
入力できないことを示すために灰色になるのですが、何か問題が?
背景は灰色になるけど、文字は黒くなるので
CEdit::SetReadOnly
がウインドウズぽくて良い気がします・・
入力ができないようにするだけで何か表示はしておくのですか?
そうでなければいっそエディットボックス非表示にしちゃえば?
EnableWindowだとまったく触れなくなるのに対し
ReadOnlyはフォーカス当てて←→でスクロール可能
エディットボックスに長い文字列を表示する場合はReadOnlyのほうがよかったと・・・。
まったく触れなくてよくて、背景を白いままにしておきたければ
フォーカスが当たった時に無理やり次のコントロールに移してやるとか・・・。
確認とか何もしてないので変なことを書いていたらごめんなさい。
おばかな発想かもしれませんけど
スタティックコントロールと重ねて
CEDITをEnableWindowでコントロールするのは
数が多いとメンドウくさい(力仕事)ですけど
どうでしょうか
すいません、PreTranslateMessage の使い方を間違えてました。m(__)m
正しくは、
>case EN_UPDATE:
case WM_KEYDOWN:
>return FALSE; // デフォルトの動作を抑止
return TRUE; // デフォルトの動作を抑止
でした。
ReadOnlyにした場合で、
どうしても背景を白くしたいなら、
WM_CTLCOLORSTATIC を処理すればいいです。