不是临时对象!
而是对话框里的实际Editbox,button,check

解决方案 »

  1.   

    是一个临时的对象
    CWnd::GetFocus  
    static CWnd* PASCAL GetFocus( );Return ValueA pointer to the window that has the current focus, or NULL if there is no focus window. 
    注意
    The pointer may be temporary and should not be stored for later use.
    所以你不能根据ClassName判断。
    这个函数实际上调用了API版本的Windows函数,并且建立了一个临时的对象关联到Windows函数返回的句柄。
      

  2.   

    我想通过PreTranslateMessage
    CWnd *pwnd=GetFocus()
    WM_KEYDOWN针对不同类的对象作不同处理
    (如BUTTON-> KEYDOWN 
    EDITBOX->  TAB跳过
    等)
    那么该怎么处理?
      

  3.   

    只有将hwnd和成员变量的hwnd比较了
      

  4.   

    这我知道,
    我只是想改进一下
    想使用ClassName做得比较通用的!算了,只好先这样了!
      

  5.   


       BOOL CMyFormView::IsEdit( CWnd* pWnd )
       {
          ASSERT( pWnd != NULL );
          HWND hWnd = pWnd->GetSafeHwnd();
          if (hWnd == NULL)
             return FALSE;      TCHAR szClassName[6];
          return ::GetClassName(hWnd, szClassName, 6) &&
                 _tcsicmp(szClassName, _T("Edit")) == 0;
       } 
      

  6.   


       BOOL CMyFormView::IsEdit( CWnd* pWnd )
       {
          ASSERT( pWnd != NULL );
          HWND hWnd = pWnd->GetSafeHwnd();
          if (hWnd == NULL)
             return FALSE;      TCHAR szClassName[6];
          return ::GetClassName(hWnd, szClassName, 6) &&
                 _tcsicmp(szClassName, _T("Edit")) == 0;
       } 
      

  7.   


       BOOL CMyFormView::IsEdit( CWnd* pWnd )
       {
          ASSERT( pWnd != NULL );
          HWND hWnd = pWnd->GetSafeHwnd();
          if (hWnd == NULL)
             return FALSE;      TCHAR szClassName[6];
          return ::GetClassName(hWnd, szClassName, 6) &&
                 _tcsicmp(szClassName, _T("Edit")) == 0;
       }