Версия для печати темы

Нажмите сюда для просмотра этой темы в обычном формате

Форум программистов _ MS Visual C++ _ Текстовый редактор с наследником Cedit

Автор: mahsus 16:04:2008, 12:22

Пишу текстовый редактор в VS 2005. Для этого создаю наследника СEdit CMEdit. Создаю функцию

CODE
afx_msg BOOL OnUndo();

Естественно в файле MEdit.cpp пишу
CODE
BOOL CMEdit::OnUndo()
{ //отмена
return CEdit::Undo();
}

Все нормально. Для CMEdit будет контексное меню, которое создаю динамически. В нем будет такой пункт как ID_EDIT_UNDO, поэтому в карте пишу
CODE

BEGIN_MESSAGE_MAP(CMEdit, CEdit)
ON_COMMAND(ID_EDIT_UNDO, OnUndo)
END_MESSAGE_MAP()

При компиляции
j:\...\medit.cpp(41) : error C2440: 'static_cast' : cannot convert from 'BOOL (__thiscall CMEdit::* )(void)' to 'AFX_PMSG'
Хотя, если писать в MSVisual C++6, такой ошибки нет. В чем может быть проблема? Подскажите пожалуйста.
Заранее благодарен за ответ.

Автор: European 16:04:2008, 12:38

afx_msg void OnUndo();

Автор: mahsus 16:04:2008, 13:27

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

Автор: European 16:04:2008, 13:36

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

Автор: mahsus 16:04:2008, 13:49

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

Автор: European 16:04:2008, 13:53

Цитата(mahsus @ 16:04:2008 - 15:49) *
это функция
afx_msg void OnMenuItemSelect();

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

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


Должно быть: afx_msg void OnMenuItemSelect( UINT ID );
В функцию придет ID выбранного пункта меню

Автор: mahsus 16:04:2008, 13:57

ТОЧНО! Большое спасибо за ответ!

Форум Invision Power Board (http://nulled.ws)
© Invision Power Services (http://nulled.ws)