This unit is a tool for creating functions like CastleMessages.MessageOK. To make nice "modal" box, you want to temporarily replace TCastleWindowCustom callbacks with your own, call Application.ProcessMessage method in a loop until user gives an answer, and restore everything. This way you can implement functions that wait for some keypress, or wait until user inputs some string, or wait until user picks something with mouse, or wait for 10 seconds displaying some animation, etc.