Текстовый редактор с наследником Cedit

Тема в разделе "MS Visual C++", создана пользователем mahsus, 16 апр 2008.

  1. mahsus

    mahsus Гость

    Пишу текстовый редактор в VS 2005. Для этого создаю наследника СEdit CMEdit. Создаю функцию
    [codebox]afx_msg BOOL OnUndo();[/codebox]
    Естественно в файле MEdit.cpp пишу
    [codebox]BOOL CMEdit::OnUndo()
    { //отмена
    return CEdit::Undo();
    }[/codebox]
    Все нормально. Для CMEdit будет контексное меню, которое создаю динамически. В нем будет такой пункт как ID_EDIT_UNDO, поэтому в карте пишу
    [codebox]
    BEGIN_MESSAGE_MAP(CMEdit, CEdit)
    ON_COMMAND(ID_EDIT_UNDO, OnUndo)
    END_MESSAGE_MAP()
    [/codebox]
    При компиляции
    j:\...\medit.cpp(41) : error C2440: 'static_cast' : cannot convert from 'BOOL (__thiscall CMEdit::* )(void)' to 'AFX_PMSG'
    Хотя, если писать в MSVisual C++6, такой ошибки нет. В чем может быть проблема? Подскажите пожалуйста.
    Заранее благодарен за ответ.
     
  2. European

    Регистрация:
    4 сен 2006
    Сообщения:
    2.580
    Симпатии:
    0
    Код (Text):
    afx_msg void OnUndo();
     
  3. mahsus

    mahsus Гость

    почему нельзя сделать чтобы возвращало bool?
     
  4. European

    Регистрация:
    4 сен 2006
    Сообщения:
    2.580
    Симпатии:
    0
    Можно глупый вопрос? Кому вы хотите возвращать результат? Юзер выбрал пункт меню, MFC вызывает Ваш метод и результат его выполнения фиолетов для MFC. Или Вы собираетесь вызывать этот метод напрямую?
     
  5. mahsus

    mahsus Гость

    Почему-то в 6 студии все нормально..., но у меня не только на этой функции ошибка...
    Вот такую ошибку дает
    j:\...\medit.cpp(40) : error C2440: 'static_cast' : cannot convert from 'void (__thiscall CMEdit::* )(void)' to 'void (__thiscall CCmdTarget::* )(UINT)'

    это функция
    afx_msg void OnMenuItemSelect();

    написал макрос так:
    ON_COMMAND_RANGE(STARTFROM, STARTFROM+11, OnMenuItemSelect)

    не знаешь причем тут CCmdTarget и UINT...?
     
  6. European

    Регистрация:
    4 сен 2006
    Сообщения:
    2.580
    Симпатии:
    0
    Должно быть: afx_msg void OnMenuItemSelect( UINT ID );
    В функцию придет ID выбранного пункта меню
     
  7. mahsus

    mahsus Гость

    ТОЧНО! Большое спасибо за ответ!
     
Загрузка...

Поделиться этой страницей