gui_moderator (gui_moderator) wrote in gui_programming,
gui_moderator
gui_moderator
gui_programming

CWnd::GetSafeHwnd()

Каждый, кто использовал MFC, знает о существовании функции HWND CWnd::GetSafeHwnd(). Почему "safe"? Достаточно взглянуть на реализацию:

HWND CWnd::GetSafeHwnd() const
{
     return this == NULL ? NULL : m_hWnd;
}

Очевидно, что обращение к этой функции через нулевой указатель на объект абсолютно корректно и не приведет ни к каким катастрофическим последствиям:

CWnd* pwnd = 0;
HWND hwnd = pwnd->GetSafeHwnd(); // hwnd will be set to 0

Аналогичным образом реализован CWnd::operator HWND(). Следует, однако, заметить, что хотя вызов невиртуальной функции через нулевой указатель в реализации С++ от Microsoft и легален, согласно стандарту, поведение кода с подобными изысками не определено.
Tags: c++, mfc, microsoft-specific
  • Post a new comment

    Error

    default userpic
  • 6 comments