autor: Kuba Bieszke
Aplikacji ma pokazać podstawowe kontrolki Windows i ich możliwości. Kod w kolorze czerwonym oznacza dodanie tych linijek w danym miejscu. Gotowy program można ściągnąć z działu pliki do skopiowania.
1. Stworzenie aplikacji dzięki kreatorowi MFC AppWizard (exe) opartej na oknie dialogowym (1 krok kreatora). W następnych punktach nic nie zmieniamy.
2. Edytujemy okno dialogowe (jeden z zasobów) wstawiając odpowiednie kontrolki jak na rysunku. Dla kontrolek Group Box, Static Text, Button, Check Box oraz Radio Button ustawiamy w właściwościach tekst jaki ma być wyświetlony zakładka GENERAL i własność CAPTION.

3. Ustawienia zdarzeń kontrolek (prócz Group Box, Static Text):
dla kontrolki Edit Box: z menu View wybierz ClassWizard..., zakłądka Member Variables, wybierz obiekt: IDC_EDIT1 i kliknij Add Variable..., w oknie dialogowym uzupełnij, Member variable name: m_edit, Category: Value, Variable type: CString.
dla kontrolki Button: prawym kliknięciem na przycisku otwórz menu i wybierz Events..., w New Windows messages/events wybierz: BN_CLIKED, kliknj: Add and Edit, nazwij: OnPrzycisk, przejście do kodu:
void CKontrolkiDlg::OnPrzycisk()
{
m_edit =
_T("Kliknięto PRZYCISK"); // nowy tekst
UpdateData(false); // zmaina tekstu
}
dla kontrolki Check Box: ClassWizard..., zakładka Message Maps, wybierz obiekt: IDC_CHECK1 i Message: BN_CLICKED, kliknij Add Function, nazwji OnWybor1, tak samo dla Check2. Zmiana kodu:
void CKontrolkiDlg::OnWybor1()
{
m_edit =
_T("Wybrano WYBÓR 1"); // nowy tekst
UpdateData(false); // zmaina tekstu
}
void CKontrolkiDlg::OnWybor2()
{
m_edit =
_T("Wybrano WYBÓR 2"); // nowy tekst
UpdateData(false); // zmaina tekstu
}
dla kontrolki Radio Button: tak samo jak poprzednio, nazwy: OnOpcja1, OnOpcja2.
void CKontrolkiDlg::OnOpcja1()
{
m_edit =
_T("Wybrano OPCJA 1"); // nowy tekst
UpdateData(false); // zmaina tekstu
}
void CKontrolkiDlg::OnOpcja2()
{
m_edit =
_T("Wybrano OPCJA 2"); // nowy tekst
UpdateData(false); // zmaina tekstu
}
dla kontrolki List Box: ClassWizard..., zakłądka Member Variables, wybierz obiekt: IDC_LIST1 i kliknij Add Variable..., w oknie dialogowym uzupełnij Member variable name: m_lista, Category: Control, Variable type: CListBox. Przejdź do funkcji OnInitDialog i dopisz kod:
BOOL CKontrolkiDlg::OnInitDialog()
{
CDialog::OnInitDialog();
// Set the icon for this dialog. The framework does this
automatically
// when the application's main window is not a dialog
SetIcon(m_hIcon, TRUE); // Set big icon
SetIcon(m_hIcon, FALSE); // Set small icon
m_lista.AddString("Element
1");
m_lista.AddString("Element 2");
m_lista.AddString("Element 3");
return TRUE; // return TRUE unless you set the focus to a control
}
ClassWizard..., zakładka Message Maps, wybierz, obiekt: IDC_LIST1 i Message: LBN_DBLCLK i kliknij Add Function, nazwji, OnDblclkLista1. Dodaj kod:
void
CKontrolkiDlg::OnDblclkLista1()
{
m_lista.GetText(m_lista.GetCurSel(),m_edit);
UpdateData(false); // zmaina tekstu
}
dla kontrolki Combo Box postępujemy jak dla List Box. Nazwy IDC_COMBO2, m_combo. Dla OnInitDialog dopisz kod:
BOOL CKontrolkiDlg::OnInitDialog()
{
CDialog::OnInitDialog();
// Set the icon for this dialog. The framework does this
automatically
// when the application's main window is not a dialog
SetIcon(m_hIcon, TRUE); // Set big icon
SetIcon(m_hIcon, FALSE); // Set small icon
m_lista.AddString("Element 1");
m_lista.AddString("Element 2");
m_lista.AddString("Element 3");
m_combo.AddString("Element
4");
m_combo.AddString("Element 5");
m_combo.AddString("Element 6");
return TRUE; // return TRUE unless you set the focus to a control
}
Dodaj Message CBN_SELCHANGE - OnSelchangeCombo. Dodanie kodu:
void
CKontrolkiDlg::OnSelchangeCombo()
{
m_combo.GetLBText(m_combo.GetCurSel(),m_edit);
UpdateData(false); // zmaina tekstu
}