对话框中添加一个CEditView,怎么改变大小的有关问题

对话框中添加一个CEditView,如何改变大小的问题
本帖最后由 cr945211 于 2015-06-17 10:02:28 编辑
添加一个对话框(ProgramDlg),将ProgramWin(基于EditView类)放在该对话框中,如下代码

BOOL CProgramDlg::OnInitDialog()
{
CDialog::OnInitDialog();
CRect clientRect;
    GetClientRect(&clientRect);
    CView* pNewView;
    pNewView = new CProgramWin;//ProgramWin为编辑区EditView
    // Creation of the view window
    afxTraceEnabled=FALSE;
    if(! pNewView->Create(NULL, NULL, WS_VISIBLE | WS_CHILD, CRect(clientRect.left,clientRect.top,clientRect.right-180,clientRect.bottom+90), this, 1000))//编辑区的大小
    {
        TRACE0( "Failed view creation\n" );
     }
    afxTraceEnabled=TRUE;

    pNewView->OnInitialUpdate();

return TRUE;  // return TRUE unless you set the focus to a control

}

其中Create函数第四个参数决定了该编辑区的大小,而且是在对话框初始OnInitDialog()的时候创建的。现在的问题是我把改对话框放在悬浮框中,如下代码
int CWinProPane::OnCreate(LPCREATESTRUCT lpCreateStruct)
{
if (CDockablePane::OnCreate(lpCreateStruct) == -1)
return -1;
// TODO:  在此添加您专用的创建代码
CRect rectDummy;
rectDummy.SetRectEmpty();
//创建选项卡窗口:
if (!m_ProDlg.Create(IDD_PROGRAM,this))
{
TRACE0("未能创建输出选项卡窗口/n");
return -1;//未能创建
}
m_ProDlg.ShowWindow(SW_SHOW);
return 0;
}
void CWinProPane::OnSize(UINT nType, int cx, int cy)
{
CDockablePane::OnSize(nType, cx, cy);

// TODO: 在此处添加消息处理程序代码
//选项卡控件应覆盖整个工作区
m_ProDlg.SetWindowPos(this,-1,-1,cx,cy,SWP_NOMOVE|SWP_NOACTIVATE|SWP_NOZORDER);
m_ProDlg.ShowWindow(SW_SHOW);
}

IDD_PROGRAM是ProgramDlg对话框的ID。当悬浮框大小改变,由于对话框中的编辑区不是个控件,所以没办法用OnSize()来改变大小,所以悬浮框中有一部分没有被对话框或者说CEditView覆盖,看着很不好看。如果我改变创建的对话框的大小或者改变!pNewView->Create(NULL, NULL, WS_VISIBLE | WS_CHILD, CRect(clientRect.left,clientRect.top,clientRect.right-180,clientRect.bottom+90), this, 1000)中CRect时可以改变,但是不能随着悬浮框大小的改变而变化。
 我的问题是,如何使对话框中的EditView可随着悬浮框改变大小啊??
------解决思路----------------------
MoveWindow等来调整大小
------解决思路----------------------
CProgramDlg::onsize中,调用
pNewView->MoveWindow或者SetWindowPos

------解决思路----------------------
CEditView创建的时候加ES_AUTOVSCROLL   及ES_MULTILINE   风格
------解决思路----------------------
	CRect rx(10,10,300,200);
TxEdit.Create(WS_CHILD
------解决思路----------------------
WS_VISIBLE
------解决思路----------------------
WS_VSCROLL
------解决思路----------------------
ES_AUTOVSCROLL
------解决思路----------------------
ES_MULTILINE
------解决思路----------------------
WS_BORDER,rx,this,10082);
rx.MoveToY(310);

if(!TxEdView) TxEdView=new CEditView;
TxEdView->Create(NULL,NULL,WS_CHILD
------解决思路----------------------
WS_VISIBLE
------解决思路----------------------
WS_VSCROLL
------解决思路----------------------
ES_MULTILINE
------解决思路----------------------
WS_BORDER,rx,this,10083);


CEdit TxEdit
CEditView TxEdView*

View类应该使用指针,否则..........................................
------解决思路----------------------
加ES_WANTRETURN风格