With reference to your Solution 1, my advice is: Don't do it!
I have not had to start a new desktop and open windows in it, but many years ago, I was working on an application where we wanted to create windows and "move" the handling to separate threads. We ended up changing the design.
There are reasons why you are having problems getting this working in MFC. Although the link I have posted below is from a book on VC6, I believe the points are still valid.
Using User-Interface Threads[
^]
You should create a separate UI thread and create your window from there once that thread is up and running.
Soren Madsen