Компьютерный форум OSzone.net  

Компьютерный форум OSzone.net (http://forum.oszone.net/index.php)
-   Программирование и базы данных (http://forum.oszone.net/forumdisplay.php?f=21)
-   -   Подмена символа (http://forum.oszone.net/showthread.php?t=62332)

lehha 07-03-2006 15:31 414897

Подмена символа
 
Всем привет!
Возникла проблема следующего характера есть 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 415467

Как всегда пришлось немного поизвращятся и получился следующий код
Код:

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



Время: 09:32.

Время: 09:32.
© OSzone.net 2001-