The easiest way around it would be to put all of your asset loading inside a function, that can be called to reload everything if the dbScreenInvalid() returns 1.
You would need to think about the problem a little more though to be able to get completely around it... the above, while restoring the objects, images etc that are lost, it wont put them back where you had them or do to them what was already done... SO, you would need to be able to catch the system keys(setting up your own message pump with peekmessage would probably be the best way to catch them before their message is processed) and store a whole heap of data relating to the assets inside your program, before the ctrl-alt-del message is processed.
If you want to dig around a little in directX, im pretty sure that there are functions to deal with specifically lost devices or changing the screen resolution, resolution changes work differently to alt-tabbing i think. You should be able to save the buffer from the directX device when alt tabbing and restore it without having to reload stuff... resolution changing though usually means destroying the existing DX surface and creating a new one at the new resolution, so all media etc will be lost when that happens and need to be reloaded.
If it ain't broke.... DONT FIX IT !!!