Все стандартные элементы управления Windows используются при создании программ совершенно одинаково. Есть два способа: первое - это поместить их на диалоговую панель, и второй - написать весь код руками. При помещении на диалоговую панель происходит тоже самое, что при написании кода руками только все делает ClassWizard. Давайте с Вами посмотрим общую методику.
Создаем приложение на базе диалогового окга с именем TestCommon.
Сначала необходимо описать класс элемента управления в классе диалога. Вот так:
class CTestCommonDlg : public CDialog
{
// Construction
public:
......
// Implementation
CEdit m_Edit;
CSpinButtonCtrl m_Spin;
protected:
......
Вызывает функцию Create для создания элементов управления нужно из функции OnInitDialog класса диалога. Давайте создадим.
BOOL CTestCommonDlg::OnInitDialog()
{
......
// TODO: Add extra initialization here
m_Edit.Create(WS_CHILD | WS_VISIBLE | WS_BORDER,CRect(10,10,100,50),this,ID_EDIT);
m_Spin.Create(WS_CHILD | WS_VISIBLE | WS_BORDER,CRect(200,200,300,250),this,ID_SPIN);
return TRUE; // return TRUE unless you set the focus to a control
}
Если сейчас запустить приложение, то оба элемента управления будут на диалоговом окне.
В ходе работы приложения все controls посылают извещения. Извещения обрабатываются в функции OnNotify, добавьте ее к классу диалога используя Add Virtual Function. Давайте перехватим извещенение о том, что происходит нажатие на SpinButton.
BOOL CTestCommonDlg::OnNotify(WPARAM wParam, LPARAM lParam, LRESULT* pResult)
{
// TODO: Add your specialized code here and/or call the base class
if (wParam==ID_SPIN)
{
AfxMessageBox("Notification message");
}
return CDialog::OnNotify(wParam, lParam, pResult);
}
При запуске программы нажатие на SpinButton будет вызывать диалоговое окно. В wParam находится идентификатор элемента управления пославшего извещение. В lParam находится указатель на структуру сообщения NMHDR.