A Functional Specification answers the question "What does my program do?". In the case of a GUI program, it's more like "What does my program do when the user does ?".
Depending on how detailed you want to get, generally you will create the functional spec based on Use Cases. So, for example, your use case is "User enters Customer Data". Functional spec says "User clicks on menu option for 'Customer Data'. Display Customer Data Dialog. Customer Data Dialog contains text boxes Name, Address, City, State, Zip. Customer Data Dialog contains buttons 'OK' and 'Cancel'. When user clicks 'OK' button, program checks that all text boxes have data entered. If yes, continue. If no, hoist message box." Et cetera, et cetera. Think of a functional spec as a narrative of the user experience.
Hope this helps!