I have just done the opposite to you in fact.
I had some multithreading in my app, and had numerous DLL's for that and winsock:
  • Winsock DLL
  • Winsock Wrapper DLL
  • Subclassing DLL
  • Msg Window DLL
  • API Timer DLL
  • Multithreading Proxy DLL

This got a little silly so I combined them and now have:
  • Winsock DLL
  • Multithreading DLL

This is way easier to maintain and the code is more compact and easier to use.
It's a fine balance between too many or too little DLLs...

Woka