在 MFC 專案中使用 CSliderCtrl 控制水平游標移動,範圍需涵蓋 320 個像素位置。因單一位元組僅能表示 0~255,故需拆分為高低兩個位元組傳輸(例如透過序列埠指令)。
假設滑桿目前位置為 pos(0~320):
pos % 256(取餘數)pos / 256(整數除法)void CMyDialog::OnHScroll(UINT nSBCode, UINT nPos, CScrollBar* pScrollBar)
{
CSliderCtrl* pSlider = (CSliderCtrl*)pScrollBar;
int pos = pSlider->GetPos(); // 0 ~ 320
BYTE lowByte = pos % 256; // 低位
BYTE highByte = pos / 256; // 高位
// 組合指令發送,例如:cmd[0] = lowByte, cmd[1] = highByte
SendCommand(lowByte, highByte);
CDialog::OnHScroll(nSBCode, nPos, pScrollBar);
}
接收端收到高低位元組後,可還原原始位置:
int pos = (highByte << 8) | lowByte; // 等同 highByte * 256 + lowByte
m_slider.SetRange(0, 320);。掌握高低位元組拆解與合成技巧,即可輕鬆突破單一位元組 255 的限制,滿足更大範圍數值的傳輸需求。