• 15 апреля стартует «Курс «SQL-injection Master» ©» от команды The Codeby

    За 3 месяца вы пройдете путь от начальных навыков работы с SQL-запросами к базам данных до продвинутых техник. Научитесь находить уязвимости связанные с базами данных, и внедрять произвольный SQL-код в уязвимые приложения.

    На последнюю неделю приходится экзамен, где нужно будет показать свои навыки, взломав ряд уязвимых учебных сайтов, и добыть флаги. Успешно сдавшие экзамен получат сертификат.

    Запись на курс до 25 апреля. Получить промодоступ ...

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

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

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

mahsus

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

European

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

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...?
 
E

European

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

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

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

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

mahsus

ТОЧНО! Большое спасибо за ответ!
 
Мы в соцсетях:

Обучение наступательной кибербезопасности в игровой форме. Начать игру!