Я делаю сборку MFC как класс на WinAPI как exersise. Теперь я сталкиваюсь с проблемой, что я получаю ошибку выполнения во время выполнения кода.
В моей главной строке присутствуют следующие строки:
void MyApp::Init(int nCmd)
{
main.Create(L"This is the MainFrame Window");
main.ActivateFrame(nCmd);
GWnd* p= main.GetActiveView();//Get pointer to the first view of the FrameWnd
//p->GetID();
}
Записанная строка вызывает ошибку. Конструкторы класса GWnd:
//Standard classname
GWnd::GWnd() :m_ClassName(L"Wnd"), BaseWnd(), m_pOwnerWnd(NULL)
{
GWnd::Init();
}
//Userdefined Classname
GWnd::GWnd(LPCWSTR ClassName) : m_ClassName(ClassName), BaseWnd(), m_pOwnerWnd(NULL)
{
GWnd::Init();
}
//Copy constructor
GWnd::GWnd(const GWnd& Wnd) : BaseWnd(GetHwnd()), m_pOwnerWnd(NULL)
{
m_ClassName = L"Wnd";
}
Функция назначения:
//Operators
operator HWND() { return BaseWnd<GWnd>::GetHwnd(); }
GWnd operator=(GWnd Wnd)
{
GWnd tmp(Wnd);
}
Я надеюсь, что строк кода достаточно для ваших ответов. Кто-нибудь понимает проблему, с которой я сталкиваюсь? И мог бы дать мне подсказку, куда смотреть дальше?
попробуйте добавить это:
GWnd* p= (GWnd*)main.GetActiveView();
вместо этого:
GWnd* p= main.GetActiveView();
и затем используйте это
p->GetDlgCtrlID()
GWnd
? Кроме того, знаете ли вы цель конструктора копирования и оператора присваивания? Его цель - сделать копию переданного объекта - я не вижу, что происходит в вашем конструкторе копирования.