Я думал, что OnInitialUpdate()
функция вызывается перед OnUpdate()
функции, но когда я открываю документ, OnInitialUpdate()
называется первым, но после этого CView::OnInitialUpdate();
он называет OnUpdate()
. Таким образом, после выполнения этого он не мог перейти к следующему шагу до выполнения функции OnUpdate()
.OnUpdate() вызывается перед OnInitialUpdate()
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
.
Я хочу знать причину, почему это называется первым.
Вопрос не имеет смысла. Ответ такой же бесполезный, как и очевидно: код ведет себя так, как он это делает, потому что он написан именно так. – IInspectable
@ Необычный извините, я совершил большую ошибку! Я хотел знать, почему pInputData устанавливается в NULL после OnUpdate(), а не CView :: OnInitialUpdate(), о котором я говорил ранее. Код CView :: OnInitialUpdate(); выше было в первой строке функции, MFC рекомендует нам ввести код ниже CView :: OnInitialUpdate(). Но я думаю, что функция OnInitialUpdate() может инициализировать переменные, и теперь мне любопытно, почему она перешла к функции OnUpdate() в середине функции OnInitialUpdate(), которая, как я полагаю, должна идти после заканчивая все в OnInitialUpdate()? – Sean
Это объяснение не делает вещи более ясными. Вы заявляете о допущениях, которые являются неправильными, и затем спрашивайте, почему вы заканчиваете поведение, которое предположения не могут объяснить. Пожалуйста, возьмите себе копию Jeff Prosise '[Программирование Windows с MFC] (http://www.amazon.com/dp/1572316950). – IInspectable