Dela via


Lägga till kontroller för hand

Du kan antingen lägga till kontroller i en dialogruta med dialogredigeraren eller lägga till dem själv med kod.

Om du vill skapa ett kontrollobjekt själv bäddar du vanligtvis in C++-kontrollobjektet i en C++-dialogruta eller ett ramfönsterobjekt. Precis som många andra objekt i ramverket kräver kontroller tvåstegskonstruktion. Du bör anropa kontrollens funktionen Skapa medlem som en del av skapandet av den överordnade dialogrutan eller ramfönstret. För dialogrutor görs detta vanligtvis i OnInitDialog och för ramfönster i OnCreate.

I följande exempel visas hur du kan deklarera ett CEdit objekt i klassdeklarationen för en härledd dialogklass och sedan anropa Create medlemsfunktionen i OnInitDialog. CEdit Eftersom objektet deklareras som ett inbäddat objekt skapas det automatiskt när dialogobjektet skapas, men det måste fortfarande initieras med en egen Create medlemsfunktion.

class CCustomDialog : public CDialog
{
   CEdit m_edit;
   virtual BOOL OnInitDialog();
};

Följande OnInitDialog funktion konfigurerar en rektangel och anropar Create sedan för att skapa Windows-redigeringskontrollen och koppla den till det onitialiserade CEdit objektet.

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;
}

När du har skapat redigeringsobjektet kan du också ange indatafokus till kontrollen genom att anropa SetFocus medlemsfunktionen. Slutligen returnerar du 0 från OnInitDialog för att visa att du ställer in fokus. Om du returnerar ett värde som inte är noll ställer dialoghanteraren in fokus på det första kontrollobjektet i dialogrutans objektlista. I de flesta fall vill du lägga till kontroller i dialogrutorna med dialogredigeraren.

Se även

Skapa och använda kontroller
Kontroller
CDialog::OnInitDialog