Is the problem that the return is 1 whether they cancel or not or is the problem that clicking the cancel button doesn't really cancel the print?
You could use PrintOpen, PrintDataWindow, PrintClose functions and then use PrintCancel from a popup window that you code. It might give better control over the print job.