Ręczne dodawanie formantów
Kontrolki można dodać do okna dialogowego za pomocą edytora okien dialogowych lub dodać je samodzielnie z kodem.
Aby samodzielnie utworzyć obiekt kontrolny, zwykle osadzasz obiekt kontrolny języka C++ w oknie dialogowym języka C++ lub obiekcie okna ramowego. Podobnie jak wiele innych obiektów w strukturze, kontrole wymagają dwuetapowej konstrukcji. Należy wywołać funkcję Create member kontrolki w ramach tworzenia okna dialogowego nadrzędnego lub okna ramki. W przypadku okien dialogowych zwykle odbywa się to w elemecie OnInitDialog i oknach ramowych w obszarze OnCreate.
W poniższym przykładzie pokazano, jak można zadeklarować CEdit
obiekt w deklaracji klasy pochodnego okna dialogowego, a następnie wywołać Create
funkcję składową w elemencie OnInitDialog
. CEdit
Ponieważ obiekt jest zadeklarowany jako obiekt osadzony, jest automatycznie konstruowany podczas konstruowania obiektu okna dialogowego, ale nadal musi być inicjowany z własną Create
funkcją składową.
class CCustomDialog : public CDialog
{
CEdit m_edit;
virtual BOOL OnInitDialog();
};
Poniższa OnInitDialog
funkcja konfiguruje prostokąt, a następnie wywołuje metodę Create
, aby utworzyć kontrolkę edycji systemu Windows i dołączyć ją do niezainicjowanego CEdit
obiektu.
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;
}
Po utworzeniu obiektu edycji można również ustawić fokus wejściowy na kontrolkę, wywołując funkcję składową SetFocus
. Na koniec zwracasz wartość 0 z OnInitDialog
, aby pokazać, że ustawiono fokus. Jeśli zwracasz wartość niezerową, menedżer okien dialogowych ustawia fokus na pierwszy element kontrolki na liście elementów okna dialogowego. W większości przypadków należy dodać kontrolki do okien dialogowych za pomocą edytora okien dialogowych.
Zobacz też
Tworzenie i używanie kontrolek
Kontrolki
CDialog::OninitDialog