对话框中添加一个CEditView,怎么改变大小的有关问题
对话框中添加一个CEditView,如何改变大小的问题
添加一个对话框(ProgramDlg),将ProgramWin(基于EditView类)放在该对话框中,如下代码
其中Create函数第四个参数决定了该编辑区的大小,而且是在对话框初始OnInitDialog()的时候创建的。现在的问题是我把改对话框放在悬浮框中,如下代码
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 风格
------解决思路----------------------
CEdit TxEdit
CEditView TxEdView*
View类应该使用指针,否则..........................................
------解决思路----------------------
加ES_WANTRETURN风格
添加一个对话框(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风格