PDA

Показать полную графическую версию : Подмена символа


lehha
07-03-2006, 15:31
Всем привет!
Возникла проблема следующего характера есть CEdit контрол, мне нужно заменить некоторые символы в нем, делаю следующее

CMyEd::OnChar(UINT nChar, UINT nRepCnt, UINT nFlags)
{
nChar=(int)'q';
CEdit::OnChar(nChar, nRepCnt, nFlags);
}

По идее все символы должны менятся на q но этого не происходит. Делал следующее:


CMyEd::OnChar(UINT nChar, UINT nRepCnt, UINT nFlags)
{
СSTring str;
GetWindowText(str);
str+="q";
SetWindowText(str);
//CEdit::OnChar(nChar, nRepCnt, nFlags);
}

Все работает НО коретка всегда в начале строки, на CMyEd у меня поставлен DDV_MaxChars, который перестал ограничивать кол-во вводимых символов.
Что нужно сделать чтоб заработал 1 вариант?
Спасибо за рание!

lehha
09-03-2006, 08:23
Как всегда пришлось немного поизвращятся и получился следующий код

CMyEd::OnChar(UINT nChar, UINT nRepCnt, UINT nFlags)
{
CString str;
GetWindowText(str);
if(nChar>31)
{
switch(nChar)
{
case 'q':
str+="rr";
break;
default:
str+=(char)nChar;
break;
}
}
if(nChar==8)
str.Delete(str.GetLength()-1);
if(str.GetLength()<100)
SetWindowText(str);
SetSel(str.GetLength(),str.GetLength(),0);
}
единственный минус это неподдерживает вставки т.е. ctrl+v




© OSzone.net 2001-2012