说实话我很想骂人,但想想毕竟是自己技术不行,只能潜心学习潜心提问~
既是,建立了一个虚拟桌面,
不知如何将一个程序切换到另一个桌面去。
Windows似乎并未提供相关函数,MSDN上也没有说。
然而当关机的时候,如果有多个桌面,我们会看到桌面一个一个被关闭,最终剩下的窗口汇集到Default桌面,
然后关闭所有程序,之后关机……
另外微软自家的Desktops程序可以切换托盘图标,
VirtuaWin亦然,小弟不才,不会跟踪调试。。
然而又看到某牛X程序居然可以完全做到这一点……
又是才疏学浅的问题了,VC代码完全看不懂,连入口点都找不到。。
http://www.vckbase.com/sourcecode/shell/zddesk.zip
麻烦诸位帮忙分析下,小弟拜谢

解决方案 »

  1.   

    frame.cpp// Moves the specifed entry from one desk (nOldDesk) to another desk (nNewDesk)
    void CZDDeskFrame::MoveToDesk(int nOldDesk, int nOldEntry, int nNewDesk)
    {
       // Get the window handle
       HWND hWnd = m_arrHwndDesktop[nOldDesk][nOldEntry];   // Remove the window from the current desk...
       m_arrHwndDesktop[nOldDesk].RemoveAt(nOldEntry);   // And add it to the new desk
       m_arrHwndDesktop[nNewDesk].Add(hWnd);   // Hide or show the window based on whether we are moving it to or from
       // the currently active desk
       if(nOldDesk == m_nCurrDesk)
          SafeShowWindow(hWnd,SW_HIDE);
       else if(nNewDesk == m_nCurrDesk)
          SafeShowWindow(hWnd,SW_SHOW);
    }
      

  2.   

    1.zddesk.cpp文件的CZDDeskApp theApp;
    2.frame.cpp文件的
    CZDDeskFrame::CZDDeskFrame()
    {
       // Initialize the virtual desktop
       InitializeDesks();
    }
    这样就可以一种跟踪下去了,上面为入口点。