Why search for a solution if you do not know the root cause of the problem?
First, what is "a long time"? Five seconds, ten seconds, a minute, three minutes? Do all windows take a long time to open or just a select few? How many levels of inheritance are the windows using? How many controls are in the windows? Do the windows use Tab controls? If so, how many tab pages do they contain? How many DataWindow controls? Do the "slow" windows automatically perform a database retrieve/refresh when they open? How many DDDW's are in use? Are the DDDW's using Auto-Retrieve? How many rows do they contain? Is the app installed locally on each user's machine or are the PBD's accessed from a network location? Is a VPN involved? Remote desktop? Citrix? How many PBL's and how many objects are in the PBL's? Do the objects used in one poor-performing window reside in a single PBL or in many PBL's?
I'm not asking for you to supply me/us with the answers to these questions - I'm only providing you with some examples of the questions you need to be asking yourself as you consider why app performance is judged to be poor.
Roland's suggestion to utilize the Profiler tool is a good one that may help you discover the place(s) where execution time is being spent. The time and effort needed to learn how to judiciously use the Profiler and analyze the data it produces is time well spent for any PB developer.
Good luck!
Some generic suggestions:
Don't compile any large image files into the EXE. Have a PBR assigned to the library where the image is used or an empty PBL named 'images.pbl'.
Try to put the objects referenced at startup into as few libraries as possible. This limits disk reads.