How to force the TAB and RETURN key to move to next valid cell, even if it means to next row.

Take a look at the ProcessKeys code in CGXBrowserGrid (gxbrowse.cpp). You might copy/paste this code to your derived grid class.