Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > C/C++ программирование > Visual C++
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 21.02.2018, 11:37   #1
erslgoeirjh
Форумчанин
 
Регистрация: 19.05.2009
Сообщений: 153
По умолчанию CMFCMaskedEdit -- при щелчке "мыши" курсор попадал на первый символ в нём?

Есть компонент текстового поля с маской IDC_EDIT1, которому соответствует переменная m_IDC_EDIT1 типа CMFCMaskedEdit.
Как сделать так, чтобы при щелчке "мыши" на её левую кнопку курсор в этом текстовом поле становился на первый символ в нём?

Нужно создать класс CMyMFCMaskedEdit, который является потомком класса CMFCMaskedEdit. Но какие функции следует переопределить и что следует написать в коде переопределения?
erslgoeirjh вне форума Ответить с цитированием
Старый 21.02.2018, 12:43   #2
waleri
Старожил
 
Регистрация: 13.07.2012
Сообщений: 6,493
По умолчанию

Перехватывайте сигнал EN_SETFOCUS с помощью ON_EN_SETFOCUS.
В обработчике двигайте курсор куда вам надо.
waleri вне форума Ответить с цитированием
Старый 22.02.2018, 16:16   #3
erslgoeirjh
Форумчанин
 
Регистрация: 19.05.2009
Сообщений: 153
По умолчанию

Цитата:
Сообщение от waleri Посмотреть сообщение
Перехватывайте сигнал EN_SETFOCUS с помощью ON_EN_SETFOCUS.
В обработчике двигайте курсор куда вам надо.
А как правильно связать сообщение ON_EN_SETFOCUS и функцию CMyMFCMaskedEdit::OnSetFocus ?

Я написал:

Код:
void  CMyMFCMaskedEdit::OnSetFocus(CWnd *pOldWnd)
{
    CPoint  point;

    point = GetCaretPos();
    point.x = 1;
    SetCaretPos(point);
    CMFCMaskedEdit::OnSetFocus(pOldWnd);
}
а выше в том же файле MyMFCMaskedEdit.cpp я написал:

Код:
BEGIN_MESSAGE_MAP(CMyMFCMaskedEdit,CMFCMaskedEdit)
    ON_EN_SETFOCUS(IDC_EDIT1,&CMyMFCMaskedEdit::OnSetFocus)
END_MESSAGE_MAP
на что мне компилятор выдал ошибку:

Цитата:
IntelliSense: недопустимое преобразование типа
error C2440: ststic_cast: невозможно преобразовать "void(__thiscall CMyMFCMaskededit::*)(CWnd*)" в "AFX_PMSG"
Как исправить эту ошибку?
erslgoeirjh вне форума Ответить с цитированием
Старый 22.02.2018, 17:31   #4
waleri
Старожил
 
Регистрация: 13.07.2012
Сообщений: 6,493
По умолчанию

Цитата:
Сообщение от erslgoeirjh Посмотреть сообщение
Как исправить эту ошибку?
https://docs.microsoft.com/en-us/cpp...ntrol-handlers
waleri вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск