我想实现一个类似于acdsee的功能,也就是双击acdsee主界面上某张图的缩略图,会弹出一个新窗口显示该图的大图,请问这种弹出的新窗口该怎么写

解决方案 »

  1.   

    通常是构建对话框类的对象,然后调用DoModal:
    CYourDlg dlg;
    dlg.DoModal();
      

  2.   

    楼上的是做了一个模态对话框!
    不知楼主需要什么样的对话框?
    (1)创建一非模态对话框
    CMyDlg* pMainWnd = new CMyDlg;
    pMainWnd->Create();
    (2)创建一模态对话框
    CMyDlg dlg;
    dlg.Domdal();非模态的对话框是独立的,就是说和主程序可以同时交换数据,而模态的对话框则只能和自己交换。还有一个区别在于内存分配,new在堆中,另一在栈中,一般说两者一样,但如果你在对话框中开了很大的空间做成员,第二种就会有问题了,因为栈空间是受限的。但据说解决栈溢出用static申明,在全局数据区分配内存就可以了(我没试过)!模态消息不进message loop;非模态消息进入message loop。
      

  3.   

    pMainWnd->Create();
    之后还要pMainWnd->ShowWindow(TRUE);
      

  4.   

    用非模态对话框,create,然后ShowWindow(TRUE);
      

  5.   

    1  如果是弹出对话框
       创建一非模态对话框 CNewDlg* pNewDlg = new CNewDlg;   pNewDlg->Create(); pNewDlg->ShowWindow(TRUE);
       创建一模态对话框   CNewDlg dlg;dlg.Domdal();   
    2  类似ACDSEE切换视图,在新视图中处理
       CView* pOldActiveView=GetActiveView();   CCreateContext context;
       context.m_pCurrentDoc=GetActiveDocument();
       context.m_pNewViewClass=(pOldActiveView->GetRuntimeClass()==RUNTIME_CLASS(CFirstView))?RUNTIME_CLASS(CSecondView):RUNTIME_CLASS(CFirstView);   //create the new view
       CView* pNewView=STATIC_DOWNCAST(CView,CreateView(&context));
       if(pNewView!=NULL)
       {
           pNewView->ShowWindow(SW_SHOW);
           pNewView->OnInitialUpdate();
           SetActiveView(pNewView);
           RecalcLayout();       //finally destroy the old view...
           pOldActiveView->DestroyWindow();
       }