There are two problems here. First, there is stopping the app from closing. Second, you want each form to only close on use of the correct button. To do the second part first ('cause it is easier),
In the form's class module, the area before the first subroutine or function in VBA is called the declaration area. It is that part of the class module before the first executable instruction in the module. Items that are declared PUBLIC in that area are visible in all routines within that one form. SO... declare a Boolean public variable there that is your OKtoClose flag. In the form's Form_Load code, set that flag FALSE. (Or you could do it in the form's Form_Open routine. Tomato/Tomahto.)
Now in the form's Form_Unload routine, test the flag. If it is FALSE, return Cancel = -1. If it is TRUE, do nothing.
In the close button's CloseBtn_Click routine, set the flag TRUE and then do a DoCmd.Close acForm, Me.Name, acSaveNo (which is exactly what ArnelGP told you to do.) So the logic is, if someone tries to close the form by any method OTHER THAN using the command button, the "Cancel" test in the Form_Unload will block the action. But if you use the button, you turn off the flag and the "Cancel" test does nothing, so the form closes.
Now as to the other problem, protecting the app...
You need a "global" button, which usually goes on something like a switchboard or a master control form. This one uses the same kind of logic used to keep forms open, but this one has a QUIT button that will do an Application.Quit for you. The Form_Unload on the switchboard will block the app from premature closing.