Версия для печати
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум на Исходниках.RU > Visual C++ / MFC / WTL > Как программно поместить курсор в CMFCMaskedEdit в нужную позицию?


Автор: erslgoeirjh 29.03.19, 11:03
Есть текстовое поле с маской m_IDC_EDIT1 типа CMFCMaskedEdit. Это текстовое поле предназначено для ввода даты и времени (например, такое значение
Цитата
2019.03.29/13:49:12.000
).

Код установки значений для этого текстового поля:

<{CODE_COLLAPSE_OFF}><{CODE_WRAP_OFF}>
    m_IDC_EDIT1.EnableMask(_T("dddd dd dd dd dd dd ddd"),_T("____.__.__/__:__:__.___"),_T('_'));
    m_IDC_EDIT1.SetValidChars(_T("0123456789"));
    m_IDC_EDIT1.SetWindowText(L"____.__.__/__:__:__.___");



Мне нужно, чтобы при щелчке левой кнопки "мыши" курсор в этом текстовом поле всегда помещался на его самую первую (нулевую позицию).

Я пробовал:

<{CODE_COLLAPSE_OFF}><{CODE_WRAP_OFF}>
    void  CMyMFCMaskedEdit::OnSetFocus(CWnd *pOldWnd)
    {
        SetSel(0,0);
        CMFCMaskedEdit::OnSetFocus(pOldWnd);
    }



пробовал:

<{CODE_COLLAPSE_OFF}><{CODE_WRAP_OFF}>
    void  CMyMFCMaskedEdit::OnLButtonUp(UINT nFlags, CPoint point)
    {
        SetSel(0,0);
        CMFCMaskedEdit::OnLButtonUp(nFlags,point);
    }



и пробовал:

<{CODE_COLLAPSE_OFF}><{CODE_WRAP_OFF}>
    void  CMyMFCMaskedEdit::OnLButtonDblClk(UINT nFlags, CPoint point)
    {
        SetSel(0,0);
        CMFCMaskedEdit::OnLButtonDblClk(nFlags,point);
    }



однако ничего не получается--при щелчке левой кнопке "мыши" курсор в этом текстовом поле появляется на той позиции, куда я щёлкнул, а не на самой первой (нулевой) позиции.

Как мне решить эту проблему?

Автор: Олег М 29.03.19, 12:06
Цитата erslgoeirjh @
Как мне решить эту проблему?

Сначала вызвать CMFCMaskedEdit::OnLButtonUp, потом SetSel(0,0);
Или вообще не вызывать CMFCMaskedEdit::OnLButtonUp

Powered by Invision Power Board (https://www.invisionboard.com)
© Invision Power Services (https://www.invisionpower.com)