我在很多地方都看到类似这样的使用 GetDlgItem(IDC_BOARD_SIZE) , 但是在MSDN上面写着的是标准调用是
HWND GetDlgItem(
  HWND hDlg,       // handle of dialog box
  int nIDDlgItem   // identifier of control
);
为什么现在的调用只有一个参数,还有,IDC_BOARD_SIZE指的哪个参数,是什么类型的?第一个参数和第二个参数分别是什么意思(我英文不大好)?谢谢!

解决方案 »

  1.   

    呵呵,你看到的那个是
    CWnd::GetDlgItem(int nID)
    这个是一个类成员函数而HWND GetDlgItem(
      HWND hDlg,       // handle of dialog box
      int nIDDlgItem   // identifier of control
    );
    是一个sdk的函数你在对话框累里面调用GetDlgItem(IDC_BOARD_SIZE),就是调用的类成员函数CWnd::GetDlgItem如果要用到第二种用法,要这样
    ::GetDlgItem(this->m_hWnd,IDC_BOARD_SIZE);
    效果一样的那个IDC_BOARD_SIZE是你某个控件的id,
    如果HWND GetDlgItem(
      HWND hDlg,       // handle of dialog box
      int nIDDlgItem   // identifier of control
    );的话,
    第一个参数是窗体的句柄,第二个参数是某个控件的ID,和IDC_BOARD_SIZE是一个意思
      

  2.   

    两个的主要区别是用的地方不一样
    一个参数的是在窗口中调用的函数,两个参数的是在平台SDK中调用的
    HWND GetDlgItem(
      HWND hDlg,       // handle of dialog box窗口句柄
      int nIDDlgItem   // identifier of control控件ID
    );
      

  3.   

    CWnd::GetDlgItem(int nID)只是对SDK函数包装了一下,调用起来更方便些,不用指定hDlg而已
      

  4.   

    区别楼上的都说了,我补充一下与主题无关的内容:GetDlgItem并不是只能得到对话框里控件的窗口指针,其实你从CWnd派生一个类,在这个派生类中再创建一些button,edit等控件,也可以用GetDlgItem得到它们的窗口句柄。