用AfxMessageBox(...)函数,弹出一个对话框,可是在窗体的中间位置,能不能改变出现的位置,比如说在左上角或左下角 。另:在现有的程序中调用已有的可执行程序(.exe),用system(...)函数,可是在用system 会出现 DOS 的控制台窗口,有没有办法不让它出现?

解决方案 »

  1.   

    1.MoveWindow
    2.用ShellExecute吧,最后一个参数参看MSDN,把窗口隐藏
      

  2.   

    重载OnWindowPosChanging()设置对话框显示位置
      

  3.   

    可以肯定地说,位置可以改变。给你一段代码,你参考一下吧。
    //计算工具条位置
    CRect rcClient;
    CRect rcWindow;
    GetClientRect(&rcClient);
    GetWindowRect(&rcWindow); GlobalLayout *playout;
    playout=((CPatternDesignCADApp *)AfxGetApp())->GetGloballayoutPtr();
    playout->SetWindowRect(&rcWindow);
    playout->SetClientRect(&rcClient);

    CSize srToolBar=
    m_wndToolBar.CalcFixedLayout(FALSE,TRUE);
    CSize szToolSelect=
    m_wndToolSelectBox.CalcFixedLayout(FALSE,FALSE);
    CSize szObjView=
    m_wndObjViewBox.CalcFixedLayout(FALSE,TRUE);
    CSize szColorBar=
    m_wndColorBox.CalcFixedLayout(FALSE,TRUE);
    CSize szNavigator=
    m_wndNavigatorBox.CalcFixedLayout(FALSE,TRUE);
    CSize szLayerBar=
    m_wndLayerBox.CalcFixedLayout(FALSE,TRUE); playout->SetSize(&szToolSelect,
    GLOBALLAYOUT_TOOLSELECTSIZE);
    playout->SetSize(&szColorBar,
    GLOBALLAYOUT_TOOLCOLORSIZE);
    playout->SetSize(&szNavigator,
    GLOBALLAYOUT_TOOLNAVIGATORSIZE);
    playout->SetSize(&szObjView,
    GLOBALLAYOUT_TOOLOBJVIEWSIZE);
    playout->SetSize(&szLayerBar,
    GLOBALLAYOUT_TOOLLAYERSIZE); // 浮动工具条。
    int nPosY=(rcWindow.Height()-rcClient.Height())+srToolBar.cy; FloatControlBar(&m_wndToolSelectBox,
    CPoint(rcClient.left,nPosY), CBRS_ALIGN_LEFT);
    nPosY-=(rcWindow.Height()-rcClient.Height());
    FloatControlBar(&m_wndNavigatorBox,
        CPoint(rcClient.Width()-szNavigator.cx,nPosY),
    CBRS_ALIGN_LEFT);
    nPosY+=(szNavigator.cy+20);
    FloatControlBar(&m_wndObjViewBox,
        CPoint(rcClient.Width()-szObjView.cx,nPosY),
    CBRS_ALIGN_LEFT);
    nPosY+=(szObjView.cy+20);
    FloatControlBar(&m_wndColorBox,
    CPoint(rcClient.Width()-szColorBar.cx,nPosY),
    CBRS_ALIGN_LEFT);
    nPosY+=(szColorBar.cy+20);
    FloatControlBar(&m_wndLayerBox,
    CPoint(rcClient.Width()-szLayerBar.cx,nPosY),
    CBRS_ALIGN_LEFT); return 0;
    }
    void CMainFrame::OnFileNew() 
    {
    CNewFileDlg dlg;
    if(dlg.DoModal()!=IDOK)
    {
    GlobalLayout * pGlobalLayout;
    pGlobalLayout=((CPatternDesignCADApp *)AfxGetApp())->GetGloballayoutPtr();
    CRect   rc;
    /*根据客户区大小设置位图宽和高*/
    pGlobalLayout->GetClientRect(&rc);
    m_MainBmpInterFace.InitBmpInterface(rc.Width(),rc.Height());
    }
    else
    {
    m_MainBmpInterFace.InitBmpInterface(dlg.m_nWidth,dlg.m_nHeight);
    }
    m_wndLayerBox.UpdateLayerList();
    Invalidate();
    }