感觉GetSafeHwnd()是个多余的东东?解决思路

感觉GetSafeHwnd()是个多余的东东?
如果这个函数的内部实现是这样:

HWND CWnd::GetSafeHwnd(){
  if(m_hWnd==NULL)
  return NULL;
  else return m_hWnd;  
}
那么和直接return m_hWnd有什么区别吗? 反正m_hWnd为NULL的时候返回的也是m_hWnd的值。

到底为什么要搞出GetSafeHwnd(),GetSafeHmenu()这样的一些函数来呢? 为了解决什么样的问题?

谢谢!

------解决方案--------------------
HWND CWnd::GetSafeHwnd() const
{ return this == NULL ? NULL : m_hWnd; }
它的实现是这样的吧
Returns the window handle for a window. Returns NULL if the CWnd is not attached to a window or if it is used with a NULL CWnd pointer. 

------解决方案--------------------
GetSafeHwnd() 非空句柄。
GetHwnd() 可能为空句柄。

一般句柄的作用:转指针,确定发送消息目标。
空句柄转不了指针,当然发送目标也会失败啊。
------解决方案--------------------
GetHwnd() 可能为空句柄。

这个东西不存在啊,我就是和上面对比
------解决方案--------------------
是为了CWnd指针为空的时候访问这个函数不会崩溃……不是很好的设计,鼓励使用空指针
------解决方案--------------------
还是使用空指针为好

------解决方案--------------------
探讨

是为了CWnd指针为空的时候访问这个函数不会崩溃……不是很好的设计,鼓励使用空指针

------解决方案--------------------
探讨
引用:

是为了CWnd指针为空的时候访问这个函数不会崩溃……不是很好的设计,鼓励使用空指针


请教下何谓空指针

------解决方案--------------------
探讨

引用:
引用:

是为了CWnd指针为空的时候访问这个函数不会崩溃……不是很好的设计,鼓励使用空指针


请教下何谓空指针

CWnd* pWnd = NULL;
pWnd->GetSafeHwnd();

------解决方案--------------------
探讨

HWND CWnd::GetSafeHwnd() const
{ return this == NULL ? NULL : m_hWnd; }
它的实现是这样的吧
Returns the window handle for a window. Returns NULL if the CWnd is not attached to a window or if it is used with……

------解决方案--------------------
pDlg是非模态的,create了、但没有show
需要在其他线程判断窗口是否可用
if(!::IsWindow(pDlg->GetSafeHwnd()))
{
//一些窗口方法不可用
}