我做的一个控制程序需要全屏(640*480分辨率),就是整个系统运行一个程序,但是我用SetWindowPos()函数做不到,调整不好位置,或并不是我预期的位置。请高手指点怎样实现!

解决方案 »

  1.   

    在窗口的初始化中加入:
    ShowWindow(SW_SHOWMAXIMIZED);
      

  2.   

    http://www.codeguru.com/dialog/FullScreenDlgDemo.shtml
      

  3.   

    真巧,我前几天刚刚看了一篇文章,就是这个方面的,你也看看吧。下面的代码应该可以的:
    void CFrame::OnViewFullScreen()
    {
        if (m_bBlownUpMode)
        {
            if (!m_rNonBlownUpRect.IsRectEmpty())
            {
                m_bBlownUpMode = FALSE;
                SetWindowPos(NULL,
                    m_rNonBlownUpRect.left,
                    m_rNonBlownUpRect.top,
                    m_rNonBlownUpRect.Width(),
                    m_rNonBlownUpRect.Height(),
                    SWP_NOZORDER);
            }
        }
        else
        {
            m_bBlownUpMode = TRUE;        GetWindowRect(&m_rNonBlownUpRect);        int x=0, y=0, cx, cy;
            GetBlownUpPosition(&x, &y);
            GetBlownUpSize(&cx, &cy);        SetWindowPos(NULL, x, y, cx, cy, SWP_NOZORDER);
        }
    }void CFrame::OnGetMinMaxInfo(MINMAXINFO FAR* lpMMI)
    {
        CFrameWnd::OnGetMinMaxInfo(lpMMI);    lpMMI->ptMinTrackSize=CPoint(MIN_FRAME_WIDTH, 320);
        int cx, cy;
        GetBlownUpSize(&cx, &cy);
        lpMMI->ptMaxTrackSize=CPoint(cx, cy);
    }void CFrame::OnNcLButtonDown(UINT nHitTest, CPoint point)
    {
        if (m_bBlownUpMode)
            return ;    CFrameWnd::OnNcLButtonDown(nHitTest, point);
    }void CFrame::GetBlownUpPosition(int *px, int* py)
    {
        *px=0, *py=0;    *px-=GetSystemMetrics(SM_CXFIXEDFRAME);
        *px-=GetSystemMetrics(SM_CXEDGE);    *py-=GetSystemMetrics(SM_CYFIXEDFRAME);
        *py-=GetSystemMetrics(SM_CYCAPTION);
        *py-=GetSystemMetrics(SM_CYEDGE);
        *py-=GetSystemMetrics(SM_CYMENU);
    }void CFrame::GetBlownUpSize(int *pcx, int* pcy)
    {
        int x, y;
        GetBlownUpPosition(&x, &y);    *pcx=GetSystemMetrics(SM_CXSCREEN);
        *pcy=GetSystemMetrics(SM_CYSCREEN);    *pcx+=-x*2;    *pcy+=-y;
        *pcy+=GetSystemMetrics(SM_CYEDGE);
        *pcy+=GetSystemMetrics(SM_CYFIXEDFRAME);
    }
    或者你直接看这里就行:
    http://www.csdn.net/expert/topic/769/769668.xml?temp=.715481
      

  4.   

    在OnInitDialog中加入
    CRect rect(0, 0, ::GetSystemMetrics(SM_CXSCREEN), ::GetSystemMetrics(SM_CYSCREEN)); 
    MoveWindow(0,0,rect.Width(),rect.Height());
      

  5.   

    //取得屏幕宽度
    m_nScreenWidth = ::GetSystemMetrics(SM_CXSCREEN);
    m_nScreenHeight = ::GetSystemMetrics(SM_CYSCREEN);
    //创建透明窗口
    CreateEx(WS_EX_TOPMOST, 
    AfxRegisterWndClass(CS_DBLCLKS, AfxGetApp()-> LoadStandardCursor (IDC_ARROW)), 
    "Measure", WS_POPUP|WS_VISIBLE, 0, 0, m_nScreenWidth, m_nScreenHeight, NULL, NULL, NULL );我用这个代码来创建一个全屏的,并且透明的窗口,如果你不要透明的也可以再改画笔。
      

  6.   

    在你的App类的InitInstance()函数中,“return TRUE;”前加上
    “m_pMainWnd->ShowWindow(SW_SHOWMAXIMIZED);”