Иллюстрированный самоучитель по Visual Studio.Net

Полистовая сборка сэндвич панелей еще на сайте. | Вагон - три способа найти вагон - для толковых и бестолковых читать далее. | муфта кабельная концевая | Фотосессия беременности на сайте fotonewborn.ru. | Такси аэропорт москва шереметьево по материалам tradetaxi.ru. |

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


IDC_AMBIENT,

IDC_DIFFUSE,

IDC_SPECULAR,

IDC_AMBMAT,

IDC_DIFFMAT,

IDC_SPECMAT,

IDC_SHINE,

IDCEMISSION

//====== Цикл прохода по всем регуляторам

for (int i=0; Ksizeof (IDs) /sizeof (IDs [ 0] ) ; i++)

{

//=== Добываем Windows-описатель окна ползунка H

WND hwnd = GetDlgItem(IDs[i] } ->GetSafeHwnd () ;

UINT nID;

//====== Определяем его идентификатор

int num = GetSliderNum(hwnd, nID) ;

// Требуем установить ползунок в положение m_Pos[i]

: :SendMessage(hwnd, TBM_SETPOS, TRUE, (LPARAM) m_Pos [i] )

char s [ 8 ] ;

//====== Готовим текстовый аналог текущей позиции

sprintf (s, "%d" ,m_Pos [ i] ) ;

//====== Помещаем текст в окно справа от ползунка

SetDlgltemText (nID, (LPCTSTR) s) ;

}

return TRUE;

}

Вспомогательная функция GetsliderNum по переданному ей описателю окна (hwnd ползунка) определяет идентификатор связанного с ним информационного окна (типа Static text) и возвращает индекс соответствующей ползунку пози ции в массиве регуляторов:

int CPropDlg: :GetSliderNum (HWND hwnd, UINT& nID)

{

//==== 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.


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