Форум программистов CODEBY.NET Хостинг в Беларуси — Active Technologies

Разработка бизнес сайтов

Нужны клиенты? Тогда сюда быстрее...
X   Сообщение сайта
(Сообщение закроется через 2 секунды)

Здравствуйте, гость ( Вход | Регистрация )




> Текстовый редактор с наследником Cedit, CEdit NotePad inheritance
mahsus
Вставить ник
сообщение 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
 
Новая тема 
Ответов (1 - 6)
European
Вставить ник
сообщение 16:04:2008, 12:38
Цитата Ответить 


Божественный
*****

Группа: Модеры
Сообщений: 1 869
Регистрация: 4:09:2006
Из: Минск
Пользователь №: 6 316
Специализация: C++



Репутация: - 31 +


Код
afx_msg void OnUndo();
Подняться вверх 
 
Сообщение #2
mahsus
Вставить ник
сообщение 16:04:2008, 13:27
Цитата Ответить 


Новенький
*

Группа: Программист
Сообщений: 23
Регистрация: 6:10:2007
Пользователь №: 13 072
Специализация: программирование



Репутация: - 0 +


почему нельзя сделать чтобы возвращало bool?
Подняться вверх 
 
Сообщение #3
European
Вставить ник
сообщение 16:04:2008, 13:36
Цитата Ответить 


Божественный
*****

Группа: Модеры
Сообщений: 1 869
Регистрация: 4:09:2006
Из: Минск
Пользователь №: 6 316
Специализация: C++



Репутация: - 31 +


Можно глупый вопрос? Кому вы хотите возвращать результат? Юзер выбрал пункт меню, MFC вызывает Ваш метод и результат его выполнения фиолетов для MFC. Или Вы собираетесь вызывать этот метод напрямую?
Подняться вверх 
 
Сообщение #4
mahsus
Вставить ник
сообщение 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
European
Вставить ник
сообщение 16:04:2008, 13:53
Цитата Ответить 


Божественный
*****

Группа: Модеры
Сообщений: 1 869
Регистрация: 4:09:2006
Из: Минск
Пользователь №: 6 316
Специализация: C++



Репутация: - 31 +


Цитата(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 выбранного пункта меню
Подняться вверх 
 
Сообщение #6
mahsus
Вставить ник
сообщение 16:04:2008, 13:57
Цитата Ответить 


Новенький
*

Группа: Программист
Сообщений: 23
Регистрация: 6:10:2007
Пользователь №: 13 072
Специализация: программирование



Репутация: - 0 +


ТОЧНО! Большое спасибо за ответ!
Подняться вверх 
 
Сообщение #7


Быстрый ответ  Ответить  Новая тема 

> Быстрый ответ
Полужирный
Курсив
Подчеркнутый
Вставить изображение
Смайлики
Цитата
Код
 
 Отправлять уведомления об ответах на e-mail |  Включить смайлики |  Добавить подпись
   

 

RSS Текстовая версия Сейчас: 6:07:2008 - 00:58
с нами можно связаться по:
телефону: +375-(29)-632-60-67
e-mail:info@codeby.net