You can make a Roof Based Generic Model to interact & cut the geometry of the roof. Then you would need to think about controlling the depth where the window geometry will sit in order to fill the opening correctly.
You can always change a Roof Based Generic Model to a Window Family so it appears correctly in schedules etc.

Steps:
1. Start with a Generic Model Roof Based Family Template
2. Create the Void and cut it from the roof
3. Create the window geometry
4. From the Family Category and Parameters dialog change it to a Window Family