hWnd:控件句柄
CWnd *pWnd;
pWnd->Attach(hWnd);

解决方案 »

  1.   

    HWND GetDlgItem(
      HWND hDlg,       // handle of dialog box
      int nIDDlgItem   // identifier of control
    );
      

  2.   

    我也想知道
    可如果没有ID怎么办,如何取得句柄?
    那个nIDDlgItem如何确定?
      

  3.   

    象yajunmao(oldcat)  那样得到控件的句柄不就可以对它进行操作了吗。GetDlgCtrlID 可以通过控件的句柄 得 控件ID 可是 ID 和HANDLE都不知道的情况,我就不知道了,看看一会会不会有那位神人来指点一二!
      

  4.   

    我刚才用SPY试了一下! 可以得到控件的句柄! 也就是说能用GetDlgCtrlID  在反过来去求 ID
    还没有试过! 比较懒哈哈!!一会去看球! 那位大虾试成了告诉我一下。
      

  5.   

    如果ID和HANDLE都不知道,那只好从该控件的父窗口着手了,也就是说从父窗口对子窗口进行轮循,如果有必要的话,可以判断子窗口的类型是否为你想查询的控件类,如果是你想要的控件,自窗口查询函数返回值即为它的ID和HANDLE。
    下面的函数就是查询主创体是否为OICQ,并可进行进一步处理的
    BOOL CALLBACK EnumWindowsProc(HWND hwnd, LPARAM lParam)
    {
      HWND     Hwnd=hwnd;//窗口的句柄
      CWnd     *pWnd;
      char     WindowText[255];
      CString  CS_Text;
      pWnd=CWnd::FromHandle(Hwnd);
      pWnd->GetWindowText(WindowText,255);
      CS_Text=WindowText;
      CS_Text.MakeUpper();
      if(CS_Text=="OICQ用户登录")
        LogOrReg=LOGON;//1
      else if(CS_Text=="OICQ 注册向导")
        LogOrReg=REG;//0
      else
         return TRUE;
      int result=EnumChildWindows(
                                 Hwnd,         // handle to parent window
                                 &EnumChildProc,  // pointer to callback function
                                 NULL);
      return FALSE;
    }
    BOOL CALLBACK EnumChildProc(HWND hwnd,LPARAM lParam)//查询子窗体函数{
    ....
    ....}
    这个EnumChildProc函数对应每一个子窗口都会被调用一次的。
      

  6.   

    不好意思,有一点错误,子窗口的参数hwnd为子控件的句柄