CWnd::SubclassWindow
창 "동적으로 하위 클래스"에이 멤버 함수를 호출 하 여이 연결 CWnd 개체입니다.
BOOL SubclassWindow(
HWND hWnd
);
매개 변수
- hWnd
창 핸들입니다.
반환 값
함수가 성공 하면 0이 아닌. 그렇지 않으면 0입니다.
설명
창이 서브클래싱된 동적으로 되 면 windows 메시지를 통해 라우팅하는 CWnd의 메시지 맵 및 메시지 처리기를 호출을 CWnd의 클래스 먼저. 기본 클래스에 전달 하는 메시지 창에서 기본 메시지 처리기에 전달 됩니다.
이 멤버 함수는 Windows 컨트롤에 연결 된 CWnd 개체 및 창의 대체 WndProc 및 AfxWndProc 함수. 이전에 대 한 포인터를 저장 WndProc 에 있는 CWnd 개체입니다.
참고
이 함수를 호출할 때 창 MFC 개체에 이미 첨부 되어야 합니다.
예제
// The following code shows how to subclass the edit control and list box
// controls inside a combo box. It uses WM_CTLCOLOR for subclassing.
// CSuperComboBox represents the combo box
HBRUSH CSuperComboBox::OnCtlColor(CDC* pDC, CWnd* pWnd, UINT nCtlColor)
{
if (nCtlColor == CTLCOLOR_EDIT)
{
//Edit control
if (m_edit.GetSafeHwnd() == NULL)
m_edit.SubclassWindow(pWnd->GetSafeHwnd());
}
else if (nCtlColor == CTLCOLOR_LISTBOX)
{
//ListBox control
if (m_listbox.GetSafeHwnd() == NULL)
m_listbox.SubclassWindow(pWnd->GetSafeHwnd());
}
HBRUSH hbr = CComboBox::OnCtlColor(pDC, pWnd, nCtlColor);
return hbr;
}
void CSuperComboBox::OnDestroy()
{
//unsubclass edit and list box before destruction
if (m_edit.GetSafeHwnd() != NULL)
m_edit.UnsubclassWindow();
if (m_listbox.GetSafeHwnd() != NULL)
m_listbox.UnsubclassWindow();
CComboBox::OnDestroy();
}
요구 사항
헤더: afxwin.h