Учебник по Visual C++ .Net


Диалог по управлению светом В - часть 4


{

//==== GetDlgCtrllD по известному hwnd определяет

//==== и возвращает идентификатор элемента управления

switch ( : : GetDlgCtrllD (hwnd) )

{

// ====== Выясняем идентификатор окна справа

case IDC_XPOS:

nID = IDC_XPOS_TEXT;

return 0;

case IDC_YPOS:

nID = IDC_YPOS_TEXT;

return 1;

case IDC_ZPOS:

nID = IDC_ZPOS_TEXT;

return 2;

case IDC_AMBIENT:

nID = IDC_AMB_TEXT;

return 3;

case IDC_DIFFUSE:

nID = IDC_DIFFUSE_TEXT;

return 4 ;

case IDC_SPECULAR:

nID = IDC_SPECULAR_TEXT;

return 5; case IDC_AMBMAT:

nID = IDC_AMBMAT_TEXT;

return 6 ;

case IDC_DIFFMAT:

nID = IDC_DIFFMAT_TEXT;

return 7 ;

case IDC_SPECMAT:

nID = IDC_SPECMAT_TEXT;

return 8 ; case IDC_SHINE:

nID = IDC_SHINE_TEXT;

return 9;

case IDC_EMISSION:

nID = IDC_EMISSION_TEXT;

return 10;

}

return 0;

}

Работа с группой регуляторов

В диалоговый класс введите обработчики сообщений WM_HSCROLL и WM_CLOSE, a также реакцию на нажатие кнопки IDC_FILENAME. Воспользуйтесь для этого окном Properties и его кнопками Messages и Events. В обработчик OnHScroll введите логику определения ползунка и управления им с помощью мыши и клавиш. Подобный код мы подробно рассматривали в уроке 4. Прочтите объяснения вновь, если это необходимо, Вместе с сообщением WM_HSCROLL система прислала нам адрес объекта класса GScrollBar, связанного с активным ползунком. Мы добываем Windows-описатель его окна (hwnd) и передаем его в функцию GetsliderNum, которая возвращает целочисленный индекс. Последний используется для доступа к массиву позиций ползунков. Кроме этого, система передает nSBCode, который соответствует сообщению об одном из множества событий, которые могут произойти с ползунком (например, управление клавишей левой стрелки — SB_LINELEFT). В зависимости от события мы выбираем для ползунка новую позицию:

void CPropDlg::OnHScroll(UINT nSBCode, UINT nPos, CScrollBar* pScrollBar)

{

//====== Windows-описатель окна активного ползунка

HWND hwnd = pScrollBar->GetSafeHwnd();

UINT nID;




Начало  Назад  Вперед