在OnInitDialog()重新設(shè)定元素的位置。
色條的邊框是用靜態(tài)文本的Client Edge效果出來(lái)的。
當(dāng)然要?dú)w功于SetWindowPos的切割。
GetDlgItem(IDC_STATIC_RC)->GetWindowRect(&rcStaticR);
ScreenToClient(&rcStaticR);
GetDlgItem(IDC_STATIC_RC)->SetWindowPos(NULL,rcStaticR.left,rcStaticR.top,157,\
rcStaticR.bottom-rcStaticR.top-2,SWP_NOMOVE|SWP_NOZORDER);
設(shè)置CSliderCtrl的范圍,我的顏色條是153個(gè)像素的。
m_cSliderR.SetRange(1,153,false);
顏色條的繪制區(qū)高度,是要去掉邊框的,自繪的話,邊框值好設(shè)定和得到。我這里沒(méi)有重繪,6是我試出來(lái)的,左右邊框。
m_uiStaticRHigh=rcStaticR.bottom-rcStaticR.top-6;
在OnPaint里繪制色條
得到拖拉條現(xiàn)在的位置:
int nRpos=m_cSliderR.GetPos();
獲得DialogItem的DC,一定要用子元素自己的DC繪制;
CDC *pDcR=GetDlgItem(IDC_STATIC_RC)->GetDC();
禁止DialogItem自繪,一個(gè)小技巧。
GetDlgItem(IDC_STATIC_RC)->Invalidate(false);
GetDlgItem(IDC_STATIC_RC)->UpdateWindow();
相關(guān)推薦:C++考試輔導(dǎo):內(nèi)存分配的五種方法的區(qū)別北京 | 天津 | 上海 | 江蘇 | 山東 |
安徽 | 浙江 | 江西 | 福建 | 深圳 |
廣東 | 河北 | 湖南 | 廣西 | 河南 |
海南 | 湖北 | 四川 | 重慶 | 云南 |
貴州 | 西藏 | 新疆 | 陜西 | 山西 |
寧夏 | 甘肅 | 青海 | 遼寧 | 吉林 |
黑龍江 | 內(nèi)蒙古 |