Шаг 255 - Использование Windows Common Controls

Все стандартные элементы управления 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.


Предыдущий Шаг | Следующий Шаг | Оглавление
Автор Каев Артем.