C++/MFC

MFC Dialog 로드 이벤트

Dongmin Jang 2021. 1. 25. 17:58

OnPaint 함수를 다이얼로그가 로드되었을때 메시지 처리하기 위해 C#의 Window Loaded 같은 이벤트 처리가 필요,

Dialog 로드시 이벤트 처리를 진행.

 

아래 url을 참고

stackoverflow.com/questions/269462/mfc-execute-code-right-after-dialog-is-shown-net-equivalent-of-form-shown

 

MFC - execute code right after dialog is shown (.NET equivalent of Form.Shown)

I'm doing some small changes to C++ MFC project. I'm .NET developer so Windows programming is new to me. I need to launch some method right after CDialog is completely shown (painted) for the firs...

stackoverflow.com

 

// 사용한 코드
// WM_PAINT 메시지 
void MyCDialog::OnWindowPosChanged(WINDOWPOS *wndpos)
{
   __super::OnWindowPosChanged(wndpos);

   if (!mDialogShown && (wndpos->flags & SWP_SHOWWINDOW)) {
      PostMessage(WM_PAINT);
      mDialogShown = true;
   }
}

 

// 참고한 코드
   ON_WM_WINDOWPOSCHANGED()
   ON_MESSAGE(MyCDialog::MY_USER_MSG, OnDialogShown)

void MyCDialog::OnWindowPosChanged(WINDOWPOS *wndpos)
{
   __super::OnWindowPosChanged(wndpos);

   if (!mDialogShown && (wndpos->flags & SWP_SHOWWINDOW)) {
      PostMessage(MY_USER_MSG);
      mDialogShown = true;
   }
}

LRESULT MyCDialog::OnDialogShown(WPARAM, LPARAM)
{
   ...
}

 

 

-- 추가

2021/01/26 그럼 WM_CREATE 를 프로시저에서 체크하는거랑 뭐가 다른지 순서? 등등 장단점 고민해보기