首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> 更多程式語言 >> 程式設計綜合問答

MFC 滑桿控制項:將 0~320 位置轉換為高低位元組

     編輯:程式設計綜合問答

應用場景

在 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

注意事項

  1. 確認滑桿範圍設定正確:m_slider.SetRange(0, 320);。
  2. 若需更高精度,可擴展為 3 或 4 位元組(24/32 位元)。
  3. 傳輸協定需雙方約定位元組順序(Little-Endian 或 Big-Endian)。

掌握高低位元組拆解與合成技巧,即可輕鬆突破單一位元組 255 的限制,滿足更大範圍數值的傳輸需求。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved