can someone tell me why an application stops if the title bar of the form is clicked and held clicked?
On Windows, that is normal behavior, because the OS runs its own internal modal message loop while the mouse is held down on the title bar (for dragging the window) or on the window's borders (for resizing the window), or when displaying a popup menu, so the app's own message loop is blocked until the mouse is released, or the menu is dismissed.
Note that in the case of dragging and resizing, the OS issues a WM_ENTERSIZEMOVE message to the window before entering the modal message loop, and a WM_EXITSIZEMOVE message when the loop exits. For a popup menu, it issues WM_ENTERMENULOOP and WM_EXITMENULOOP. So, for instance, you could use these messages to start/stop a UI timer that allows you to continue processing in the UI thread while the modal message loop is running, as WM_TIMER is one of the UI messages that still gets dispatched.
i have a simple multithreaded app, with a gui thread and a timer thread, and if a user clicks on the title bar, in order to move the app around on the desktop then even the background timer thread seems to stop (maybe it's when it calls an "updategui" event handler in the gui thread)
The OS's modal message loop is a minimal loop that dispatches some, but not all, UI messages. How exactly are you updating your UI from the background thread?
I have another more complex app which is trying to maintain a communication protocol in the background. If I move the app on the desktop the protocol crashes because the app is not servicing packets when it should
Then the background task is designed badly, because it shouldn't be dependent on the UI in the first place, and should not be designed in a way that is affected by UI blockages.
i would like to be able to move an app whilst it still processed data inside
Then make sure your processing is not tied to the UI. For the most part, the UI remains responsive during a window drag/resize. But not all UI messages issued by background tasks may be processed by the UI thread while the window is dragging/resizing or displaying a menu, so be careful.