Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: Текстовый редактор с наследником Cedit
Форум программистов > Системное программирование > C, С++ и С Builder > MS Visual C++
mahsus
Пишу текстовый редактор в 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
Код
afx_msg void OnUndo();
mahsus
почему нельзя сделать чтобы возвращало bool?
European
Можно глупый вопрос? Кому вы хотите возвращать результат? Юзер выбрал пункт меню, MFC вызывает Ваш метод и результат его выполнения фиолетов для MFC. Или Вы собираетесь вызывать этот метод напрямую?
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...?
European
Цитата(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
ТОЧНО! Большое спасибо за ответ!
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Русская версия IP.Board © 2001-2008 IPS, Inc.