How can I prevent that the user can select more than one row at a time?

There are several alternatives:

1) Turn off the grid selection mechanism (call EnableSelection()) and the handle mouse clicks yourself (OnLButtonClickedRowCol) and then call SelectRange() to select that one row.

2) Another solution is to override CanChangeSelection as follows

BOOL CMyGrid::CanChangeSelection(CGXRange* pRange, BOOL bIsDragging, BOOL
bKey)
{
   if (pRange != NULL && pRange->GetHeight() > 1)
      return FALSE;
   return CGXGridCore::CanChangeSelection(pRange, bIsDragging, bKey);
}