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

  • Автор темы mahsus
  • Дата начала
M

mahsus

#1
Пишу текстовый редактор в 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, такой ошибки нет. В чем может быть проблема? Подскажите пожалуйста.
Заранее благодарен за ответ.
 
M

mahsus

#3
почему нельзя сделать чтобы возвращало bool?
 
04.09.2006
2 566
3
#4
Можно глупый вопрос? Кому вы хотите возвращать результат? Юзер выбрал пункт меню, MFC вызывает Ваш метод и результат его выполнения фиолетов для MFC. Или Вы собираетесь вызывать этот метод напрямую?
 
M

mahsus

#5
Почему-то в 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...?