수동으로 컨트롤 추가
대화 상자 편집기를 사용하여 대화 상자에 컨트롤을 추가하거나 코드를 사용하여 직접 추가할 수 있습니다.
컨트롤 개체를 직접 만들려면 일반적으로 C++ 대화 상자 또는 프레임 창 개체에 C++ 컨트롤 개체를 포함합니다. 프레임워크의 다른 많은 개체와 마찬가지로 컨트롤에는 2단계 생성이 필요합니다. 부모 대화 상자 또는 프레임 창을 만드는 과정의 일부로 컨트롤의 멤버 만들기 함수를 호출해야 합니다. 대화 상자의 경우 일반적으로 OnInitDialog 및 프레임 창의 OnCreate에서 수행됩니다.
다음 예제에서는 파생된 대화 상자 클래스의 클래스 선언에서 개체를 선언 CEdit
한 다음 멤버 함수OnInitDialog
를 호출하는 Create
방법을 보여줍니다. CEdit
개체는 포함된 개체로 선언되므로 대화 상자 개체가 생성될 때 자동으로 생성되지만 자체 Create
멤버 함수를 사용하여 초기화해야 합니다.
class CCustomDialog : public CDialog
{
CEdit m_edit;
virtual BOOL OnInitDialog();
};
다음 OnInitDialog
함수는 사각형을 설정한 다음 Windows 편집 컨트롤을 만들고 초기화 CEdit
되지 않은 개체에 연결하도록 호출 Create
합니다.
BOOL CCustomDialog::OnInitDialog()
{
CDialog::OnInitDialog();
CRect rect(85, 110, 180, 210);
m_edit.Create(WS_CHILD | WS_VISIBLE | WS_TABSTOP |
ES_AUTOHSCROLL | WS_BORDER,
rect, this, IDC_EXTRA_EDIT);
m_edit.SetFocus();
return FALSE;
}
편집 개체를 만든 후 멤버 함수를 호출하여 입력 포커스를 컨트롤로 SetFocus
설정할 수도 있습니다. 마지막으로 0을 OnInitDialog
반환하여 포커스를 설정했음을 표시합니다. 0이 아닌 값을 반환하면 대화 상자 관리자가 포커스를 대화 상자 항목 목록의 첫 번째 컨트롤 항목으로 설정합니다. 대부분의 경우 대화 상자 편집기를 사용하여 대화 상자에 컨트롤을 추가하려고 합니다.