How can I make column widths relative to the size of the grid? In other words, they should increase/decrease as the view size is changed.

You could override GetColWidth( ), e.g.  if you have 5 columns:

int CYourGrid::GetColWith(ROWCOL nCol)
{
   CRect rect = GetGridRect( );
   return rect.Width( )/5;
}

So, when the grid size changes all column width will change automatically.