功能需求: 拉動 slider bar, 連動 CEdit Control 內容自動變化
Step 1: 新增類別成員
CSliderCtrl *m_Slider2;
CString m_Slidervalue;
Step 2: 在 OnInitDialog Method 中加入初始化的程式碼
BOOL CMisc::OnInitDialog(){
// 事件處理:
// 使用 IDC_SLIDER1 , 拉動 slider 自然就會將訊號送給 parent 的 OnHScroll 事件
m_Slider2=(CSliderCtrl*)this->GetDlgItem(IDC_SLIDER1);
m_Slider2->SetRangeMin(1, false); // 設定 最小值
m_Slider2->SetRangeMax(100, false);// 最大值
m_Slidervalue = _T("1"); // 設定最初的資料
UpdateData(FALSE);
return TRUE;
}
Step 3: 加入動態資料交換設定, 連結 拉桿與顯示字串的資料轉換工作
void CMisc::DoDataExchange(CDataExchange* pDX){
CDialog::DoDataExchange(pDX);
DDX_Control(pDX, IDC_SLIDER1, *m_Slider2);
DDX_Text(pDX, IDC_EDIT1, m_Slidervalue);
}
Step 4: 設定拉桿事件, 當使用者拉動拉桿, 顯示字串自動更新
BEGIN_MESSAGE_MAP(CMisc, CResizablePage)
ON_WM_HSCROLL()
END_MESSAGE_MAP()
void CMisc::OnHScroll(UINT nSBCode, UINT nPos, CScrollBar* pScrollBar)
{
if(nSBCode == TB_THUMBTRACK) {
m_Slidervalue.Format(_T("%ld"), nPos);
UpdateData(false);
}
else {
CDialog::OnHScroll(nSBCode, nPos, pScrollBar);
}
}
Longman Dictionary Helper 實作部分
// 讀取目前資料庫中透明度的資料
long lAlphaValueDefalut=70;
TCHAR strDefalutValue[20];
_ltot(lAlphaValueDefalut,strDefalutValue,10);
CString strDefaultLongValue=get_ParValue(thdDlg->myList, _T("lAlphaValue"),strDefalutValue);
m_Slidervalue =strDefaultLongValue; // 目前資料
long lAlphaValue=_ttoi(strDefaultLongValue.GetBuffer());
m_Slider2->SetPos((int)lAlphaValue);
// 設定透明度關鍵片段
long lAlphaValue=(long)nPos;
::SetLayeredWindowAttributes(::g_LongmanMainHelperWindow, 0, (255 * lAlphaValue) / 100, LWA_ALPHA);
// 記憶使用者資料
Update_AnyLongValue(thdDlg->myList,_T("lAlphaValue"),lAlphaValue);
No comments:
Post a Comment