I have a class and functions for making a "packet" to send. Basically it's just code to be decoded on the other side. I use HIBYTE and LOBYTE to change characters to numbers, but I don't think it works. Is there anything wrong with the code?
Code:
class CPaintTool
{
public:
BYTE ToolID; //All use
CWCOORD pStart; //All use
CWCOORD pEnd; //Rectangle and Line only
WORD LineWidth; //All use
WORD Radius; //Circles only
BYTE cRed; //All use
BYTE cGreen; //All use
BYTE cBlue; //All use
char szPacket[20];
void MakePacket();
void BreakPacket();
};
void CPaintTool::MakePacket()
{
ZeroMemory(&szPacket, 20);
wsprintf(
szPacket,
"%c%c%c%c%c%c%c%c%c%c%c%c%c%c\r\n",
ToolID,
HIBYTE(pStart.x),
LOBYTE(pStart.x),
HIBYTE(pStart.y),
LOBYTE(pStart.y),
HIBYTE(pEnd.x),
LOBYTE(pEnd.x),
HIBYTE(pEnd.y),
LOBYTE(pEnd.y),
HIBYTE(LineWidth),
LOBYTE(LineWidth),
cRed,
cGreen,
cBlue
);
}
void CPaintTool::BreakPacket()
{
ToolID = (BYTE)szPacket[0];
pStart.x = MAKEWORD((BYTE)szPacket[2], (BYTE)szPacket[1]);
pStart.y = MAKEWORD((BYTE)szPacket[4], (BYTE)szPacket[3]);
pEnd.x = MAKEWORD((BYTE)szPacket[6], (BYTE)szPacket[5]);
pEnd.y = MAKEWORD((BYTE)szPacket[8], (BYTE)szPacket[7]);
LineWidth = MAKEWORD((BYTE)szPacket[10], (BYTE)szPacket[9]);
cRed = (BYTE)szPacket[11];
cGreen = (BYTE)szPacket[12];
cBlue = (BYTE)szPacket[13];
}