Call ProcessSystemEvents() at the end of the callback for button A before undimming button B.
The behavior you describe is related to the way CVI and Windows process events that occur during callbacks. CVI does not process events that occur during a callback, unless you call ProcessSystemEvents. So when, in you callback for button A, you dim button B then press button B, that event is queued but not processed. Then you undim button B and return from button A callback. Now CVI is ready to process the click on button B. Button B is no longer dimmed so the callback for button B is executed.
When you call ProcessSystemEvents in callback A before undimming B, it forces CVI to process events (like the click on button B) that occured during the callback for button A. Since button B is dimmed, the click will be processed and ignored.