说三道四技术文摘-感悟人生的经典句子
说三道四 > 文档快照

能否改变对话框的显示位置 ?

编辑:说三道四文库 发布时间:2018-05-25 01:22
HTML文档下载 WORD文档下载 PDF文档下载
用AfxMessageBox(...)函数,弹出一个对话框,可是在窗体的中间位置,能不能改变出现的位置,比如说在左上角或左下角 。

另:在现有的程序中调用已有的可执行程序(.exe),用system(...)函数,可是在用system 会出现 DOS 的控制台窗口,有没有办法不让它出现?


1.MoveWindow
2.用ShellExecute吧,最后一个参数参看MSDN,把窗口隐藏
重载OnWindowPosChanging()设置对话框显示位置
以前有片文章。使用管道技术,但具体不知道
用OnPreCreate(0函数
可以肯定地说,位置可以改变。给你一段代码,你参考一下吧。
//计算工具条位置
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();
}
谢谢大家
备案号:鲁ICP备13029499号-2 说三道四 www.s3d4.cn 说三道四技术文摘