Is there a reason why OnEndEdit() is called even though the cell neither has been edited nor has gone into "edit mode"?
We call OnEndEditing() because there should be also notification for cells which cannot be set active, e.g. checkboxes.
You can call pControl->GetModify() to check if the cell was modified.
You might also override OnValidateCell. This gets only called when the cell is modified (but before the cell is stored whereas OnEndEditing is called after the cell content is stored in the grid).