2022年6月22日 星期三

[C++] MFC CListCtrl Focus & Scroll

控鍵名稱為"IDC_LIST1"

EX01---範例

取得與設定List 焦點Focus

int iItem = 0;  
LPNMITEMACTIVATE temp = (LPNMITEMACTIVATE) pNMHDR;
iItem = temp->iItem;
((CListCtrl*)GetDlgItem(IDC_LIST1))->SetItemState(iItem,LVIS_SELECTED|LVIS_FOCUSED, LVIS_SELECTED|LVIS_FOCUSED);
((CListCtrl*)GetDlgItem(IDC_LIST1))->SetFocus();

EX02---範例

取得與設定Scrollbar 位置

int iItemScrollIndex = 0;
CRect crt;
((CListCtrl*)GetDlgItem(IDC_LIST1))->GetItemRect(0,crt,LVIR_BOUNDS);
m_iItemScrollIndex = ((CListCtrl*)GetDlgItem(IDC_LIST1))->GetTopIndex() * crt.Height();

((CListCtrl*)GetDlgItem(IDC_LIST1))->Scroll(CSize(0,iItemScrollIndex ));

2022年6月12日 星期日

[C++]把兩個char合併成一個char

 

測試環境:mfc 2019 

使用方式

unsigned char buff[2] = { '9','E' };

unsigned char ucResult = '0';

ucResult = catChar2Hex(buff[0], buff[1]);

CString cst;

cst.Format(L"%x", int(ucResult));

MessageBox(cst);


       結果: 0x9E

參考:https://blog.csdn.net/yhxxhy978/article/details/94136796


    unsigned char catChar2Hex(unsigned char hByte, unsigned char lByte)
    {
        unsigned char ucTmp = 0x00;
        unsigned char high, low;
        if (hByte >= 'A' && hByte <= 'F')
            high = hByte - 'A' + 10;
        else if (hByte >= 'a' && hByte <= 'f')
            high = hByte - 'a' + 10;
        else if (hByte >= '0' && hByte <= '9')
            high = hByte - '0';
        else
            ucTmp = 0xff;

        if (lByte >= 'A' && lByte <= 'F')
            low = lByte - 'A' + 10;
        else if (lByte >= 'a' && lByte <= 'f')
            low = lByte - 'a' + 10;
        else if (lByte >= '0' && lByte <= '9')
            low = lByte - '0';
        else
            ucTmp = 0xff;

        ucTmp = (high << 4) | (low << 0);
        return ucTmp;
    }

[SQL]顯示千分位與小數顯示

  CONVERT ( data_type [ ( length ) ] , expression [ , style ] ) CONVERT style參數說明 1  (expression為 money 或 smallmoney型別): 0 : 預設,保留小數位後兩位,並四捨...