To do what you want to do, you'd need something like this
struct GroupData {
int Rows, Cols;
char board[0]; // a placeholder for the board data
};
then when you allocate the board make a call like this:
GroupData *pData = (GroupData *)new BYTE[sizeof(GroupData)+Rows*Cols];
and when you call SetGroupData
pDP->SetGroupData(idGroup, pData, sizeof(GroupData)+Rows*Cols, dwFlags);
This will send the whole board.
------------------
-vince