The CGXLongOperation class gives the user the ability to cancel many operations that I don't want them to cancel. Is there any way to work around this?
Yes, try this:
CGXLongOperation theOp;
theOp.SetCanAbort(FALSE);
// Now, call the command which should not be aborted.
// When the called command itself creates
// a CGXLongOperation object
// it inherits all settings you did specify before and therefore
// also SetCanAbort(FALSE).
//
// CGXLongOperation is a kind of stack. Every time a method
// creates a long-operation object a new object is created on the
// stack copying all setting from the previous object.
// When the method returns, the object is popped of the
// CGXLongOperation stack.