You don't have to micro-manage your GUI events through the messagepump anymore. There is an automated system (eventhandlers) to do them for you.
If you want to see what I'm talking about, open up the designer and drag a button and a textbox onto your form.
Double-click the button and it will automatically take you to a function it created to handle the button-click event. Anything you put in that function will be run when the button is clicked.
Each control has a number of events you can assign too. The textbox will probably auto-create a "ontextchange" event for you.
You can then choose to view the designer code from the project explorer, and see how it created it.
(Something roughly like button1.Click += new ClickEvent(button1_click);)
I think your last two where threading related?
Find the "Thread" object and look at it's various properties
PostMessage
GetMessage
OpenEvent
SetEvent
CreateEvent
WaitForSingleObject
PostThreadMessage