Dynamic_downcast
Есть диалог. В нем ListCtrl. Так же есть класс, наследованный от CListCtrl, который принимает на себя обработку сообщений от ListCtrl и в котором нужно обрабатывать переменную, получаемую из класса диалог. В методе класса ListCtrl делаю так:
CWnd *f = GetParent();
CMy_CompareFolders* g = DYNAMIC_DOWNCAST( CMy_CompareFolders, f );
и, по идее, должен получить указатель на класс диалога, а получаю
error C2039: 'classCMy_CompareFolders' : is not a member of 'CMy_CompareFolders' и
error C2065: 'classCMy_CompareFolders' : undeclared identifier
Предвижу вопрос.
#include "My_CompareFolders.h" прописал в cpp.
, когда же делаю так:
CWnd *f = GetParent();
CMy_CompareFolders* g = (CMy_CompareFolders*)f;
то ошибок нет, и я могу получить необходимую мне переменную-член из класса диалога.
Не понимаю почему не получается с DYNAMIC_DOWNCAST, ведь хочется так, что б более правильно?
Может кто знает почему не проходит превый вариант?
Заранее благодарен за ответ!!!
Цитата:
Originally posted by Karp
Добрый день!
Есть диалог. В нем ListCtrl. Так же есть класс, наследованный от CListCtrl, который принимает на себя обработку сообщений от ListCtrl и в котором нужно обрабатывать переменную, получаемую из класса диалог. В методе класса ListCtrl делаю так:
CWnd *f = GetParent();
CMy_CompareFolders* g = DYNAMIC_DOWNCAST( CMy_CompareFolders, f );
и, по идее, должен получить указатель на класс диалога, а получаю
error C2039: 'classCMy_CompareFolders' : is not a member of 'CMy_CompareFolders' и
error C2065: 'classCMy_CompareFolders' : undeclared identifier
Предвижу вопрос.
#include "My_CompareFolders.h" прописал в cpp.
, когда же делаю так:
CWnd *f = GetParent();
CMy_CompareFolders* g = (CMy_CompareFolders*)f;
то ошибок нет, и я могу получить необходимую мне переменную-член из класса диалога.
Не понимаю почему не получается с DYNAMIC_DOWNCAST, ведь хочется так, что б более правильно?
Может кто знает почему не проходит превый вариант?
Заранее благодарен за ответ!!!
Добрый день!
Есть диалог. В нем ListCtrl. Так же есть класс, наследованный от CListCtrl, который принимает на себя обработку сообщений от ListCtrl и в котором нужно обрабатывать переменную, получаемую из класса диалог. В методе класса ListCtrl делаю так:
CWnd *f = GetParent();
CMy_CompareFolders* g = DYNAMIC_DOWNCAST( CMy_CompareFolders, f );
и, по идее, должен получить указатель на класс диалога, а получаю
error C2039: 'classCMy_CompareFolders' : is not a member of 'CMy_CompareFolders' и
error C2065: 'classCMy_CompareFolders' : undeclared identifier
Предвижу вопрос.
#include "My_CompareFolders.h" прописал в cpp.
, когда же делаю так:
CWnd *f = GetParent();
CMy_CompareFolders* g = (CMy_CompareFolders*)f;
то ошибок нет, и я могу получить необходимую мне переменную-член из класса диалога.
Не понимаю почему не получается с DYNAMIC_DOWNCAST, ведь хочется так, что б более правильно?
Может кто знает почему не проходит превый вариант?
Заранее благодарен за ответ!!!
Потому что класс CMy_CompareFolders должен быть с DECLARE_DYNAMIC(), IMPLEMENT_DINAMIC()
Цитата:
Originally posted by pavor
Потому что класс CMy_CompareFolders должен быть с DECLARE_DYNAMIC(), IMPLEMENT_DINAMIC()
Потому что класс CMy_CompareFolders должен быть с DECLARE_DYNAMIC(), IMPLEMENT_DINAMIC()
В том -то и дело, что я их включил - а ничего не поменялось (
DECLARE_DYNAMIC( CMy_CompareFolders ) и IMPLEMENT_DYNAMIC( CMy_CompareFolders, CListCtrl ) ) появляются те же ошибки. Может что еще надо прописать?
Цитата:
Originally posted by Karp
В том -то и дело, что я их включил - а ничего не поменялось (
DECLARE_DYNAMIC( CMy_CompareFolders ) и IMPLEMENT_DYNAMIC( CMy_CompareFolders, CListCtrl ) ) появляются те же ошибки. Может что еще надо прописать?
В том -то и дело, что я их включил - а ничего не поменялось (
DECLARE_DYNAMIC( CMy_CompareFolders ) и IMPLEMENT_DYNAMIC( CMy_CompareFolders, CListCtrl ) ) появляются те же ошибки. Может что еще надо прописать?
Ну не знаю, макрос у него такой:
#define DECLARE_DYNAMIC(class_name) \
public: \
static const CRuntimeClass class##class_name; \
static CRuntimeClass* PASCAL GetThisClass(); \
virtual CRuntimeClass* GetRuntimeClass() const; \
Поэтому вряд ли можно ожидать, что такого идентификатора нет.
Цитата:
Originally posted by pavor
Ну не знаю, макрос у него такой:
#define DECLARE_DYNAMIC(class_name) \
public: \
static const CRuntimeClass class##class_name; \
static CRuntimeClass* PASCAL GetThisClass(); \
virtual CRuntimeClass* GetRuntimeClass() const; \
Поэтому вряд ли можно ожидать, что такого идентификатора нет.
Ну не знаю, макрос у него такой:
#define DECLARE_DYNAMIC(class_name) \
public: \
static const CRuntimeClass class##class_name; \
static CRuntimeClass* PASCAL GetThisClass(); \
virtual CRuntimeClass* GetRuntimeClass() const; \
Поэтому вряд ли можно ожидать, что такого идентификатора нет.
А в свойствах проекта не пробовали ковыряться?