我认为OnInitialUpdate()
函数在OnUpdate()
函数之前调用,但是当我打开文档时,OnInitialUpdate()
首先调用,但在此CView::OnInitialUpdate();
之后调用OnUpdate()
。因此,在执行CView::OnInitialUpdate();
函数之前,OnUpdate()
之后无法再进行下一步。
void PinNameView::OnInitialUpdate()
{
CView::OnInitialUpdate();
pInputData = pOutputData = NULL;
//...
}
void PinNameView::OnUpdate(CView* pSender, LPARAM lHint, CObject* pHint)
{
//...
this->Invalidate(false);
}
我必须在pInputData
之前将变量pOutputData
和NULL
设置为 OnUpdate()
,
但它在NULL
OnUpdate()
此PinNameView
类派生自CView
类。
我想知道它首先被调用的原因。
答案 0 :(得分:1)
CView :: OnInitialUpdate调用CView :: OnUpdate。
因此,如果OnUpdate实现依赖于必须在OnInitialUpdate中设置的变量,则必须先执行init内容,然后调用默认实现。
void PinNameView::OnInitialUpdate()
{
pInputData = pOutputData = NULL;
//...
CView::OnInitialUpdate();
}