一个SDI应用程序,对应的每个菜单项都调出一个对话框进行相应的处理。
一般的对话框都是popup风格,这种风格的dlg可以设置最大,最小按钮。
  现在我想我的菜单项调出来的dlg也添加上最大化,最小化按钮(这个
容易,直接在属性里面改),但是,如果我点击最大化以后,它就会把整个
屏幕都占满了,不是象一般的子窗口那样,最大化也只占有主框架的客户区。如果我在dlg的属性里面设置未child,那么最大化和最小化按钮就没有(在
style里面就不可选择)。现在怎么实现这种子对话框?

解决方案 »

  1.   

    使用SetParent这个API函数:The SetParent function changes the parent window of the specified child window. 
    HWND SetParent(
      HWND hWndChild,      // handle to window
      HWND hWndNewParent   // new parent window
    );
      

  2.   

    我的菜单项的响应代码如下:
    void CMainFrame::OnShowtestdlg() 
    {
    // TODO: Add your command handler code here
    CTest1 *pdlg=new CTest1;
    //dlg.DoModal();
    pdlg->Create(IDD_DIALOG1,this);
    pdlg->ShowWindow(SW_SHOW);

    }可是得不到效果呀!我想得到象MDI这样的风格,
    最大化子窗口就附在主窗框之内的那种效果
      

  3.   

    如果加上SetParent,然后把对话框的属性设置成为Popup,好像行。
    void CMainFrame::OnShowtestdlg() 
    {
    // TODO: Add your command handler code here
    CTest1 *pdlg=new CTest1;
    //dlg.DoModal();
    pdlg->Create(IDD_DIALOG1,this);
    pdlg->SetParent(this);
    pdlg->ShowWindow(SW_SHOW);

    }不过最大化以后,出现的问题:
    1.象MDI程序,子窗口最大化以后,其标题栏(主要说最大化,最小化,关闭按钮)
      出现在主窗口的工具栏所在的行,也就是主窗框的菜单栏,而我最大化后出现在
      主窗口的工具栏所在的行。
    2.子窗口我设置了透明属性,在最大化以后,其标题栏的颜色(蓝色)怎么修改成
      客户区的颜色?
      

  4.   

    up learn
    怎麼解決以下二個問題1.象MDI程序,子窗口最大化以后,其标题栏(主要说最大化,最小化,关闭按钮)
      出现在主窗口的工具栏所在的行,也就是主窗框的菜单栏,而我最大化后出现在
      主窗口的工具栏所在的行。2.子窗口(dialog)有焦點時MDI主窗口沒有焦點
    謝謝!!!