GetDlgItem

来源:互联网 发布:康熙王朝 知乎 编辑:程序博客网 时间:2024/06/06 10:00

函数功能

返回窗口中指定参数ID的子元素的句柄,可以通过返回的句柄对窗口内的子元素进行操作。

编辑本段函数说明

根据继承关系,有如下几类:
1).CWindow::GetDlgItem
HWND GetDlgItem( int nID)const;
说明——
参数 nID:接收消息的控件的标识;
返回值:标识所标记的控制窗口句柄;
2).CWnd::GetDlgItem
CWnd* GetDlgItem ( int nID ) const;
void CWnd::GetDlgItem( int nID, HWND* phWnd ) const;
说明——
参数 nID:接收消息的控件的标识;
参数phWnd:子类窗口的指针;
返回值:标识所标记的控件(或子类窗口)的指针;
Example
// Uses GetDlgItem to return a pointer to a user interface control.
CEdit* pBoxOne;
pBoxOne = (CEdit*) GetDlgItem(IDC_EDIT1);
GotoDlgCtrl(pBoxOne);
3).Windows SDK
HWND GetDlgItem(
HWND hDlg, // handle to dialog box
int nIDDlgItem // control identifier
);

参数

hDlg

标识含有控件的对话框。

nlDDlgltem

指定将被检索的控件标识符。
返回值:如果函数调用成功则返回值为给定控件的窗口句柄。如果函数调用失败,则返回值为NULL,表示为一个无效的对话框句柄或一个不存在的控件。若想获得更多错误信息,请调用GetLastError函数。
备注:可以通过使用任何父子窗口对来使用GetDlgltem函数,而不仅只是对话框。只要hDlg参数指定一个父窗口,且子窗口有一个独立的标识符(象CreateWindow中hMenu参数指定的或创建子窗口的CreateWindowEx指定的那样),GetDlgltem就会返回一个有效的句柄到子窗口。
如:视图窗口是SDI框架下程序主窗口的子窗口,可以在主窗口类中通过调用该函数获得视图窗口;在MDI框架下,可以在Cchildframe框架窗口中获得v视图窗口。
下面代码是SDI框架下:
BOOL CMainFrame::SwitchViews(){CView* pOldView = GetActiveView();ASSERT(pOldView);CView* pNewView=NULL;    if(pOldView->IsKindOf(RUNTIME_CLASS(CC621View))){if((pNewView=(CView*)GetDlgItem(IDW_PANE_SECOND))==NULL){pNewView= (CView*)(RUNTIME_CLASS(CSecondView)->CreateObject());if(pNewView==NULL){TRACE("Create the second view object failed!\n");return FALSE;}CCreateContext context;    context.m_pCurrentDoc = pOldView->GetDocument();if(!(pNewView->Create(NULL, NULL, WS_CHILD | WS_VISIBLE,CRect(0,0,0,0), this, IDW_PANE_SECOND, &context))){TRACE("Create the second view child window failed!\n");delete pNewView;return FALSE;}pNewView->OnInitialUpdate();}} pNewView = (CView*) GetDlgItem(IDW_PANE_SECOND);     ASSERT(pNewView);            SetActiveView(pNewView);    pNewView->ShowWindow(SW_SHOW);    pOldView->ShowWindow(SW_HIDE);    pOldView->SetDlgCtrlID(IDW_PANE_SECOND);    pNewView->SetDlgCtrlID(AFX_IDW_PANE_FIRST);    RecalcLayout();return true;}