Научно-исследовательская лаборатория систем ЧПУ |
||||||||||||||||||||
|
||||||||||||||||||||
|
Тестовое приложение CStyleButton_TestАвтор: Козак Н.В. |
CStyleButton m_Btn; |
В функции инициализации диалога OnInitDialog выполнено связывание объекта типа CStyleButton с элементом управления в диалоге:
m_Btn.SubclassDlgItem(IDC_BUTTON1, this); |
Далее используем функции настройки вида кнопки. Вначале устанавливаем базовый цвет кнопки, угол "Tau", угол "Gamma", задаём текст (см. Рис. 2).
m_Btn.BackColor = RGB(110, 255, 113);m_Btn.SetTau(90);m_Btn.SetGamm(10);m_Btn.strTextBtn ="BIG BIGnTEXT";m_Btn.SetFont(14,"Times New Roman"); |
Для настройки угла освещения и выпуклости в приложении используются слайдеры (Sliders). В классе диалога заданы переменные для их позиций:
int m_nTrackBar1;int m_nTrackBar2; |
В функции инициализации (OnInitDialog) начальные значения соответствующих углов:
m_nTrackBar1 = 10;m_nTrackBar2 = 90; |
Далее в функции инициализации инициализированы диапазоны прокрутки ползунков, а также отображаются значения начального положения ползунков:
CString strText1;CSliderCtrl*pSlide1=(CSliderCtrl*)GetDlgItem(IDC_TRACKBAR1);pSlide1->SetRange(-90,90,TRUE);pSlide1->SetPos(m_nTrackBar1);strText1.Format("%d",pSlide1->GetPos());SetDlgItemText(IDC_STATIC_TRACK1,strText1);pSlide1 = (CSliderCtrl*)GetDlgItem(IDC_TRACKBAR2);pSlide1->SetRange(0,90,TRUE);pSlide1->SetPos(m_nTrackBar2);strText1.Format("%d",pSlide1->GetPos());SetDlgItemText(IDC_STATIC_TRACK2,strText1); |
В обработчике сообщения WM_VSCROLL меняем параметры кнопки:
if(pScrollBar->GetDlgCtrlID() == IDC_TRACKBAR1){m_Btn.SetGamm((int)pSlide->GetPos()); SetDlgItemText(IDC_STATIC_TRACK1,strText);}if(pScrollBar->GetDlgCtrlID() == IDC_TRACKBAR2){ m_Btn.SetTau((int)pSlide->GetPos()); SetDlgItemText(IDC_STATIC_TRACK2,strText);} |
Для настройки начальной освещённости используем счётчик(Spin).
Вначале объявили переменную, которая задаёт текущую начальную освещенность:
int m_nSpin; |
В функции инициализации задали диапазон и начальное значение счётчика:
m_nSpin = 20;CSpinButtonCtrl* pSpin = (CSpinButtonCtrl*)GetDlgItem(IDC_SPIN1);pSpin->SetRange(0,100);pSpin->SetPos(m_nSpin);strText1.Format("%d",m_nSpin);((CSpinButtonCtrl*)pSpin)->GetBuddy()->SetWindowText(strText1); |
Добавили код обработки счётчика в обработчике сообщения WM_VSCROLL:
if (nSBCode == SB_ENDSCROLL)return;if(pScrollBar->GetDlgCtrlID() == IDC_SPIN1){ m_Btn.SetMinIntens(nPos); strText.Format("%d",nPos); ((CSpinButtonCtrl*)pScrollBar)->GetBuddy()->SetWindowText(strText);} |
Для настройки шрифта на объёмном элементе управления используем стандартный диалог CFontDialog.
CFontDialog dlgFont(m_Btn.GetCurLf());//---------- init font dialog ---------------------------------------dlgFont.m_cf.rgbColors = m_Btn.FontColor;//---------- run font dialog ---------------------------------------if (dlgFont.DoModal() != IDOK)return;//---------- set font ---------------------------------------LOGFONT lf;dlgFont.GetCurrentFont(&lf);CFont tempFont;if(!tempFont.CreateFontIndirect(&lf))return;m_Btn.SetFont(&lf);tempFont.Detach();//----------- set color --------------------------------------m_Btn.FontColor = dlgFont.GetColor(); |
Для настойки цвета объёмного элемента управления использовался стандартный диалог CColorDialog.
CColorDialog dlg(m_Btn.BackColor);//---------- init color dialog ---------------------------------------dlg.m_cc.Flags |= CC_FULLOPEN | CC_RGBINIT;//---------- run color dialog ---------------------------------------if (dlg.DoModal() != IDOK)return;//----------- set color --------------------------------------m_Btn.BackColor = dlg.GetColor(); |
Для настройки текста кнопки создали свой диалог с одним полем ввода и одной кнопкой "Ok". Поле редактирования связали с переменной типа CString, назначение которой - хранить текст объёмного элемента управления.
CString m_strNewText; |
В коде для изменения текста ввели следующее:
m_TextDlg.m_strNewText = m_Btn.strTextBtn;if (m_TextDlg.DoModal() != IDOK)return;m_Btn.strTextBtn = m_TextDlg.m_strNewText; |
ПРИМЕЧАНИЕ
Для полной информации о методах библиотеки NCViewPanel.dll см. документ "Объёмная кнопка CStyleButton" |
Лаборатория систем ЧПУ МГТУ "Станкин" © 2002-2024
Россия, Москва, Вадковский переулок, д. 3а Телефон: +7 (499) 972-9440 Факс: +7 (499) 972-1873 |