我现在在做一个计算器,就是想问问当我点击菜单栏上的科学型,窗口切换成科学型的计算器,用那个科学型的那个窗口的类新建一个对象CscientficDlg dlg;然后就用
dlg.ShowWindow(SW_SHOW);显示
 this->MoveWindow(0,0,0,0);
 this->ShowWindow(SW_HIDE);
 this->ModifyStyleEx(WS_EX_APPWINDOW, WS_EX_TOOLWINDOW);来隐藏 
但是那个科学型的窗口不是在原来那个窗口的位置上显示,而在左上角的地方。应该怎么样让科学型那个窗口显示在标准型的窗口那里,另外当我关闭科学型的窗口时,打开任务管理器,发现那个计算器的进程还在,该怎么样当我关闭科学型的窗口时,那个隐藏的标准型的窗口也关闭呢???

解决方案 »

  1.   

    我帮你问,呵呵 
    1.标准型一个窗口,科学型一个窗口
    标准型窗口调用科学型的时候,你想要隐藏标准型窗口而显示科学型窗口。
    可是标准型窗口原来的左上角坐标为point.x point.y,怎么样让科学型窗口左上角坐标也是这个?2.关闭科学型窗口的时候,标准型窗口虽然是隐藏的可窗口没有被销毁,进程也当然也不会被结束,怎么样能让进程结束
      

  2.   

    按照你所说的,你是在原来窗口的基础上又添加了一个对话框窗口,而且同时你也把原来的那个窗口
    隐藏起来了...所以说,当你关闭科学计算的窗口时,原来的那个窗口还在隐藏中。实际上你的应用
    程序还没有关。
    我觉得要想科学型的窗口在原来那个窗口的位置上显示,可以用GetWindowRect(&rect);得到原来
    窗口的位置,然后就可以调用MoveWindow()将科学型窗口移到原来的那个位置。
    如果你想在关掉科学型窗口的时候退出应用程序,可以在主程序中设置一个变量,判断当科学型窗口
    关闭的时候就向应用程序发送关闭应用程序消息就OK了...
      

  3.   

    this->MoveWindow(0,0,0,0); 就是移动窗体到屏幕的坐上方
    调用另外一个窗体的时候不要把当前的窗体隐藏而是直接把当前的窗体关闭
      

  4.   

    我觉得楼上说的不能实现吧?
    你在程序主体里面声明一个对象CscientficDlg dlg,在对象里面把程序主体关了?怎么关?
    关了之后你的对象去哪里了?
    要使主体程序关闭了,那么所有在其里面的对象,变量都随之发生析构了吧?
    我的疑问希望楼上能够不吝赐教,我是个初学者,对深一些的知识把握不够...
      

  5.   

    关闭的时候给主窗口进程发送WM_CLOSE或WM_DESTORY消息就行了
      

  6.   

    其实也就在MDI程序里是用了两个CFromView,或者说是在对话框用嵌入了两个对话框而已
      

  7.   

    之前我也是想先得到原来窗口的位置然后用this ->movewindow();这样来做的,我今天偶然发现原来我同学是这样做得,我就是没有想到
    我按那个科学型,我同学就是想要弹出那个科学型窗口,
    代码如下
    this->EndDialog(1);
    CScientificDlg dlg;
    dlg.DoModal();
    就这么简单