Помощник
Здравствуйте, гость ( Вход | Регистрация )
|
|
16:04:2008, 12:22
|
|
Новенький ![]() Группа: Программист Сообщений: 23 Регистрация: 6:10:2007 Пользователь №: 13 072 Специализация: программирование Репутация: 0
|
Пишу текстовый редактор в 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, такой ошибки нет. В чем может быть проблема? Подскажите пожалуйста. Заранее благодарен за ответ. |
|
Сообщение
#1
|
|
![]() |
|
|
16:04:2008, 12:38
|
|
Божественный ![]() ![]() ![]() ![]() ![]() Группа: Модеры Сообщений: 1 869 Регистрация: 4:09:2006 Из: Минск Пользователь №: 6 316 Специализация: C++ Репутация: 31
|
Код afx_msg void OnUndo();
|
|
Сообщение
#2
|
|
|
|
16:04:2008, 13:27
|
|
Новенький ![]() Группа: Программист Сообщений: 23 Регистрация: 6:10:2007 Пользователь №: 13 072 Специализация: программирование Репутация: 0
|
почему нельзя сделать чтобы возвращало bool?
|
|
Сообщение
#3
|
|
|
|
16:04:2008, 13:36
|
|
Божественный ![]() ![]() ![]() ![]() ![]() Группа: Модеры Сообщений: 1 869 Регистрация: 4:09:2006 Из: Минск Пользователь №: 6 316 Специализация: C++ Репутация: 31
|
Можно глупый вопрос? Кому вы хотите возвращать результат? Юзер выбрал пункт меню, MFC вызывает Ваш метод и результат его выполнения фиолетов для MFC. Или Вы собираетесь вызывать этот метод напрямую?
|
|
Сообщение
#4
|
|
|
|
16:04:2008, 13:49
|
|
Новенький ![]() Группа: Программист Сообщений: 23 Регистрация: 6:10:2007 Пользователь №: 13 072 Специализация: программирование Репутация: 0
|
Почему-то в 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...? |
|
Сообщение
#5
|
|
|
|
16:04:2008, 13:53
|
|
Божественный ![]() ![]() ![]() ![]() ![]() Группа: Модеры Сообщений: 1 869 Регистрация: 4:09:2006 Из: Минск Пользователь №: 6 316 Специализация: C++ Репутация: 31
|
|
|
Сообщение
#6
|
|
|
|
16:04:2008, 13:57
|
|
Новенький ![]() Группа: Программист Сообщений: 23 Регистрация: 6:10:2007 Пользователь №: 13 072 Специализация: программирование Репутация: 0
|
ТОЧНО! Большое спасибо за ответ!
|
|
Сообщение
#7
|
|
![]() |
|
Текстовая версия | Сейчас: 6:07:2008 - 00:58 |