With CGXODBCGrid (and DAOGrid) when the user selects a row, I would like to move the current cell to the first editable column in that selected row. How can I do that?

You should override SetCurrentCell as follows:

BOOL CGxqueryView::SetCurrentCell(ROWCOL nRow, ROWCOL nCol, UINT flags /* = GX_UPDATENOW */)
{
   if (nCol <= GetHeaderCols())
   {
      nCol = min(GetHeaderCols()+1, GetColCount());
   }
   return CGXGridCore::SetCurrentCell(nRow, nCol, flags);
}