GetDlgItem

函数功能

返回窗口中指定参数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;
}

你可能感兴趣的:(GetDlgItem)