您当前的位置: 首页 > 

VC控件----如何根据句柄判断其类型

发布时间:2012-06-14 19:01:00 ,浏览量:0

hWnd=GetWindow(hDlg,GW_CHILD); if(hWnd == NULL || !::IsWindow(hWnd)) return FALSE; nIdFirst=GetDlgCtrlID(hWnd); do { GetClassName(hWnd,szBuf,256); //Edit子类化 if( _tcsicmp(szBuf,_T( "Edit ")) == 0) { //验证是否已经被永久映射 if(CWnd::FromHandlePermanent(hWnd) == NULL) { CEditEx *pEdit=new CEditEx(); if(pEdit == NULL) return FALSE; pSkin-> m_edtList.AddTail(pEdit); //子类化此窗口 pEdit-> SubclassWindow(hWnd); } } //button子类化 if(_tcsicmp(szBuf,_T( "Button ")) == 0) { dwStyle = GetWindowLong(hWnd,GWL_STYLE); if((dwStyle & SS_TYPEMASK) == BS_DEFPUSHBUTTON) dwStyle = BS_PUSHBUTTON; if((dwStyle & SS_TYPEMASK) == BS_AUTOCHECKBOX) dwStyle = BS_CHECKBOX; TCHAR szBuf[256]; GetWindowText(hWnd,szBuf,256); //PushButton子类化 if( (dwStyle & SS_TYPEMASK) == BS_PUSHBUTTON) { if(CWnd::FromHandlePermanent(hWnd) == NULL) { CXPButton *pBtn=new CXPButton(); if(pBtn == NULL) return FALSE; pSkin-> m_btnList.AddTail(pBtn); pBtn-> SubclassWindow(hWnd); } } //Checkbox子类化 else if( (dwStyle & SS_TYPEMASK) == BS_CHECKBOX ) { if(CWnd::FromHandlePermanent(hWnd) == NULL) { CExCheckBox *pChk=new CExCheckBox(); if(pChk == NULL) return FALSE; pSkin-> m_chkList.AddTail(pChk); pChk-> SubclassWindow(hWnd); } } else if( ( dwStyle & SS_TYPEMASK) == BS_GROUPBOX) { if(CWnd::FromHandlePermanent(hWnd) == NULL) { CExGroupBox *pGrp=new CExGroupBox(); if(pGrp == NULL) return FALSE; pSkin-> m_grpList.AddTail(pGrp); pGrp-> SubclassWindow(hWnd); } } } //static子类化 if( (_tcsicmp(szBuf,_T( "Static ")) == 0) && (GetWindowLong(hWnd,GWL_STYLE) & SS_ETCHEDHORZ) == SS_ETCHEDHORZ) { if(CWnd::FromHandlePermanent(hWnd) == NULL) { CLineStatic * pLine=new CLineStatic(); if(pLine == NULL) return FALSE; pSkin-> m_lineList.AddTail(pLine); pLine-> SubclassWindow(hWnd); } } //ComboBox子类化 if( _tcsicmp(szBuf,_T( "ComboBox ")) == 0) { if(CWnd::FromHandlePermanent(hWnd) == NULL) { CFlatComboBox *pCmb=new CFlatComboBox(); if(pCmb == NULL) return FALSE; pSkin-> m_cmbList.AddTail(pCmb); pCmb-> SubclassWindow(hWnd); } } //etc hWnd=GetWindow(hWnd,GW_HWNDNEXT); if(!::IsWindow(hWnd) || hWnd==NULL) break; }while(nIdFirst != GetDlgCtrlID(hWnd));
关注
打赏
1688896170
查看更多评论

暂无认证

  • 0浏览

    0关注

    110069博文

    0收益

  • 0浏览

    0点赞

    0打赏

    0留言

私信
关注
热门博文
立即登录/注册

微信扫码登录

0.0667s