各位大侠,如题,我想让我的程序运行起来之后,首先最大化显示,然后独占整个wingdows屏幕,用户不能切换到别的窗口去,不能点开始按钮,意思就是当我的程序运行后,是用户可以操作的唯一程序,直道用户点退出。
给分

解决方案 »

  1.   

    也就是连tab+alt也需要禁止?以及ctrl+alt+del?
    你究竟想怎么个独占法?类似病毒那种?
      

  2.   

    ::SetWindowPos(this->m_hWnd, HWND_TOPMOST, 0, 0, 0, 0, SWP_NOACTIVATE|SWP_NOSIZE|SWP_NOMOVE|SWP_SHOWWINDOW);
    将当前窗体设置为最前面的窗口。其他程序就看不见了,但是你要先让他全屏,而且没有可以最小化的按钮等,不响应win+D键等。
      

  3.   

    并非游戏的全屏模式,我的软件是一个测试软件,用于生产线,当软件启动后,操作员就只能操作这个测试软件,不能使用windows的其他资源,
    alt+tab,win+D等都需要被禁止。
    操作是比较多,还请各位大侠指点指点,一定涌泉加分!!
      

  4.   

    哈哈  这个的最优解决方法不是窗口, 而是桌面!你可以调用CreateDesktop创建一个桌面, 将这个进程在这个桌面上启动就可以了其它任何东西, 包括那些时不时弹出的广告窗口都没了。
      

  5.   

    感谢swankie,问题基本上解决了!
    结贴如下:
    1、在InitInstance()里在pMainFrame->UpdateWindow();这行之后添加如下:
    ::SetWindowPos(m_pMainWnd->m_hWnd,HWND_TOPMOST,0,0,0,0,
    SWP_NOACTIVATE | SWP_NOSIZE | SWP_NOMOVE | SWP_SHOWWINDOW);
    这样主窗口就top-most了。
    2、下一步,去掉最大最小按钮,在CMainFrame::PreCreateWindow(CREATESTRUCT& cs)里:
    cs.style = cs.style & ~(WS_MAXIMIZEBOX | WS_MINIMIZEBOX);
    3、然后重载
    //disable double click on no-client area, do nothing
    void CMainFrame::OnNcLButtonDblClk( UINT nHitTest, CPoint point )
    {
    }
    //disable drag-drop action on main frame
    void CMainFrame::OnNcLButtonDown( UINT nHitTest, CPoint point )
    {
    if   (nHitTest   ==   HTCAPTION   )  
    ;
    else  
    CFrameWnd::OnNcLButtonDown(nHitTest,   point); 
    }大功告成!
    谢谢各位的帮助,让我受益匪浅!
    我将自己的代码放在这里,希望对其他有类似问题的朋友有点帮助。