就是说,从串口读取一个字符串,内容为16进制数据,也就是0000~FFFF。然后我想把它转换成16位二进制,并赋给一个bool A[16],请问如何操作??这是第一步……然后……bool A[16],分别对应16个按钮,当A[i]为1时,对应的按钮显示,为0是隐藏。补充1,串口读取过来的字符串是每50毫秒是刷新一次的,也就是说,按钮隐藏/显示状态,也得50毫秒就刷新一次……请教如何操作……

解决方案 »

  1.   

    BOOL a[16];
    ::ZeroMemory(a,sizeof(a));
    WORD w = 128;
    for (int i =0 ;i<16;i++)
    {
    WORD j =1;
    j = j<<i;
    a[i] = (j & w)>>i;
             if(a[i]== FALSE) getdlgitem(IDC_..)->showwindow(SW_HIDE);
             else ......
    }
      

  2.   

    到if(a[i]== FALSE) getdlgitem(IDC_..)->showwindow(SW_HIDE);这里(IDC_....)可以以数组形式出现嘛?比如if(a[i]== FALSE) getdlgitem(IDC_BUTTON[i])->showwindow(SW_HIDE);这样合法么?
      

  3.   

    应该这样吧short sYourData;
    bool  A[16];
    for(int i=0; i<16; i)
    {
        A[i] = (sYourData>>i)&1;
    }if( A[i]==0)
        getdlgitem(IDC_..)->showwindow(SW_HIDE);
    你可以建立一个数组把按钮的ID号存进去
    ID号其实就是个整数