This paper describes an efficient procedure for resource-constrained project scheduling problems. It starts with a simulated annealing technique to find a base schedule, and then improves the result by a time-windowing process. Every time-window, which is part of the base schedule, is a basis for a small subproject with two sets of specific constraints. Associated subprojects with time-windows are scheduled to optimality and based on their results the base schedule is updated. The overlapping feature of time-windows makes the displacement of an activity possible within the range of the entire project. The process of creating time-windows, scheduling their associated subprojects to optimality and improving the base schedule is controlled by a feed-back based mechanism that realises a trade-off between computational effort and the improvement made. The computational results indicate that the procedure is promising and yields better solutions than several heuristic algorithms presented in the literature.