用Domodal()显示的模态对话框和用下面代码显示的的非模态对话框:  
CDialogProcess  CDiapr;  
CDiapr.Create(IDD_DIALOG10,NULL);  
CDiapr.ShowWindow(SW_SHOW);  
 
我想人为设置这两种对话框在显示相对程序主窗口的位置。  
请问怎么实现,谢谢!

解决方案 »

  1.   

    你在IDD_DIALOG10的OnInitDialog中用GetWindowRect得到主对话框的位置,然后计算你需要的偏移量,然后MoveWindow或者SetWindowPos对话框IDD_DIALOG10的位置
      

  2.   

    再问两个问题:
    1.模态对话框的初始显示位置怎么设置?
    2.to lixiaosan(小三),我在CDialogProcess类里添加了一个OnInitDialog()初始化函数,并且用SetWindowPos(this,x,y,cx,cy,SWP_SHOWWINDOW)来重新设置位置,好像不行,是否SetWindowPos的第一个参数有误?如果是的话,该怎么办?
    谢谢
      

  3.   

    移动位置的时候涉及到坐标是屏幕坐标还是窗口坐标的问题,你可以尝试着用
    ScreenToClient(Crect &rect)和ClientToScreen(CRect &rect)来转化一下坐
    标值后再移动窗口.
      

  4.   

    使用GetWindowPlacement SetWindowPlacement,就可以了
      

  5.   

    窗口都可以通过MoveWindow或者SetWindowPos来移动
      

  6.   

    如果你不需要改变窗口的属性,用movewindow简单些
      

  7.   

    先用ShowWindow(SH_HIDE)隐藏掉,再调用MoveWindow或者SetWindowPos显示,这样窗口不会出现一个闪动。
      

  8.   

    用MoveWindow不错,搞定,多谢各位。