调用当前焦点所在控件的GetRuntimeClass(),或IsKindOf方法。如:CAge a(21);
CRuntimeClass* prt = a.GetRuntimeClass();
ASSERT( strcmp( prt->m_lpszClassName, "CAge" )  == 0 );// Example for CObject::IsKindOf.
CAge a(21);  // Must use IMPLEMENT_DYNAMIC, IMPLEMENT _DYNCREATE, or
             // IMPLEMENT_SERIAL
ASSERT( a.IsKindOf( RUNTIME_CLASS( CAge ) ) );
ASSERT( a.IsKindOf( RUNTIME_CLASS( CObject ) ) );

解决方案 »

  1.   

    首先通过GetFocus()得到当前控件的句柄,然后能通过IsKindOf()来判断。
      

  2.   

    char temp[100];
    GetClassName(hWnd, temp, sizeof(temp)); 
    if(!strcmp(temp,_T("Edit")))// Edit输入框
    ...
      

  3.   

    char temp[100];
    GetClassName(hWnd, temp, sizeof(temp)); 
    if(!strcmp(temp,_T("Edit")))// Edit输入框
    return text;
      

  4.   

    为什么你的GetFocus()->IsKindof(RUNTIME_CLASS(CButton))返回FALSE?所谓的CWnd,CButton.....只是C++中专用的类而已,和Widnows控件元素没有本质上的联系,那为什么可以通过CButton来实现对BUTTON的管理呢?
    你知道,对于Windows控件来说,只要得到它的HANDLE,就可以控制它了,CBUTTON[其它管理类也是]正是有这样一个成员m_hwnd,子类化时:
    一种是DDX:DDX_####(pDX,ID_BUTTON,m_btn);
    一种是这样:m_btn.SubClassDlgItem(ID_BUTTON,this);
    他们都会调用:m_btn.SubClassWindow(ID_BUTTON的句柄);这个函数会把控件句柄给它的m_hwnd。所以我说,CButton只不过对于Button的管理方便,[我用CEdit对Edit的管理为例:m_edit.setpasschar.是它专用的而Cwnd没有],但用其它也可,你用CEdit也可以管理,但有些函数会出错的[SetWindowstext行]。
    IsKindof只是对于C++来说的操作,如:Iskindof(Run...(CButton))
    只有C++类对象是CButton这个BOOL表达式才是真。而GetFocus()得到的是一个CWnd *,可以分两种情况解释,一是真正的CWND对象指针,那ISKINDOF(CBUTTON)=0,二是指到CBUTTON对象的指针,那是1。而Getfocus返回的是前者情况,所以。。但::GetClassName是API,这是通用于VB,VC,DELPHI.....是针对Win32元素的。好了,我没时间了,这里要关了,明天再聊。