各位高手:
请问如何用GetDlgItem获得指定窗口的指定控件的句柄?
  比如我想获得CDemo界面下某个combobox的句柄,如何指定参数1呢??
  函数原型:HWND GetDlgltem(HWND hDlg,int nlDDlgltem); 
CDemo * p;
HWND hwnd = ::GetDlgItem(p->GetSafeHwnd(),IDC_IQRATE_COMBO); //黑体部分不知道怎么写
CComboBox* combo = (CComboBox*)FromHandle(hwnd); 
combo->EnableWindow(FALSE);错误:访问冲突。
谢谢!!

解决方案 »

  1.   

    CWnd* GetDlgItem(
       int nID 
    ) const;p->GetDlgItem(IDC_IQRATE_COMBO);
      

  2.   

    直接
    GetDlgItem(IDC_IQRATE_COMBO)->EnableWindow(FALSE);
      

  3.   

    首先谢谢楼上各位!!!
    问题补充:
    我是从另外一个类里调用GetDlgItem这个函数,所以需要指定具体是哪个窗口。
    2楼的方法我之前用过,报错说冲突。
      

  4.   

    你的另个类和你的CDemo类有什么联系呢?
      

  5.   

    那你要在另一个类中保存指定窗口的句柄或者窗口对象。
    然后用这个窗口对象来调用GetDlgItem才行。
      

  6.   

    最简单就把A窗口的this指针设为全局,B窗口用全局变量调用getdlgitem
    常规做法在B窗口中发消息,A窗口根据消息内容执行操作
      

  7.   

      这样试下 
     CWnd* pwnd = CWnd::FromHandle(hDlg);
    if(pwnd)
    {
    pwnd->GetDlgItem(IDC_IQRATE_COMBO)->EnableWindow(FALSE);
    }