OnInpdial()在OnInitialUpdate()之前调用

时间:2016-01-10 17:13:19

标签: c++ mfc

我认为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之前将变量pOutputDataNULL设置为 OnUpdate() , 但它在NULL

之后设置为 OnUpdate()

PinNameView类派生自CView类。

我想知道它首先被调用的原因。

1 个答案:

答案 0 :(得分:1)

CView :: OnInitialUpdate调用CView :: OnUpdate。

因此,如果OnUpdate实现依赖于必须在OnInitialUpdate中设置的变量,则必须先执行init内容,然后调用默认实现。

void PinNameView::OnInitialUpdate()
{
    pInputData = pOutputData = NULL;
    //...

    CView::OnInitialUpdate();
}