我尝试使用API,
HWND GetDlgItem(
  HWND hDlg,       // handle of dialog box
  int nIDDlgItem   // identifier of control
);
 但是编译时当成void CWnd::GetDlgItem( int nID, HWND* phWnd ) const;
怎么在VC中使用这个API函数?用其他怎么获得HWND??

解决方案 »

  1.   

    你弄错了,直接调用CWnd::GetDlgItem(int nID);即可
    如果要用你说的那个形式
    可以GetDlgItem( int nID, this_>GetSafeHandle() ) ;
    即可
      

  2.   

    楼上的没看清吧,我要的是HWND
      

  3.   

    什么怎么用?
    CWnd::GetDlgItem已经将API ::GetDlgItem包装起来了
    在VC里用void CWnd::GetDlgItem( int nID) const;即可比如对话框上有个控件IDC_EDIT
    这样用
    CEdit* m_pEdit;
    m_pEdit=GetDlgItem(IDC_EDIT);
    这样就取得了控件的指针
      

  4.   

    GetDlgItem(ID_YOURCONTROL)->GetSafeHandle();
    即可
      

  5.   

    以下我以一个对话框上有一个edit和一个button,当单击按钮时在edit中显示“你好”
    方法一:
    您没有为edit关联相关变量,则:
    void CTempDlg::OnButtonSet() 
    {
    // TODO: Add your control notification handler code here
    CEdit* pEdit=(CEdit *)GetDlgItem(IDC_EDIT1);
    pEdit->SetWindowText("你好");
    }
    方法二:
    您为edit关联了相关的变量CEdit    m_edit;
    则:
    void CTempDlg::OnButtonSet() 
    {
    // TODO: Add your control notification handler code here
    m_edit.SetWindowText("sads");
    }
    另外,您说的出现的错误可能是api中的好象加上;;吧!!!
      

  6.   

    HWND hEdit = GetDlgItem(IDC_EDIT)->GetSafeHwnd();或者::GetDlgItem(hDlg,IDC_EDIT);
      

  7.   

    GetDlgItem 得到指定窗口的上控件的 HWND
    HWND GetDlgItem(
      HWND hDlg,       // 窗口句柄
      int nIDDlgItem   // 控件 ID
    );
    在 MFC 里用时别忘了前面加上 :: 符号
      

  8.   

    CWnd::GetDlgItem(int ID);
    用这个函数就这样调
    C***Dlg dlg;
    dlg.GetDlgItem(ID_***);::GetDlgItem(CWnd* phwnd, int ID);
    用这个函数就这样调
    C***Dlg dlg;
    ::GetDlgItem(dlg, ID_***);