请教各位,RichEdit控件的显示问题。
我建了一个基于对话框的工程,用CreateEx在对话框上生成两个RichEdit控件,就像QQ或MSN的聊天窗口那样。关键代码如下:
BOOL CRichEditDemoDlg::OnInitDialog()
{
……
CRect rect;
m_richViewEx.CreateEx(WS_EX_TRANSPARENT, "RICHEDIT20A", "", WS_VISIBLE | WS_CHILD |
WS_CLIPCHILDREN | WS_VSCROLL | ES_MULTILINE | ES_READONLY |
ES_AUTOVSCROLL |ES_LEFT | ES_WANTRETURN, rect,
this, IDC_RICHVIEWEX, NULL);
m_richEditEx.CreateEx(WS_EX_TRANSPARENT, "RICHEDIT20A", "", WS_VISIBLE | WS_CHILD |
WS_CLIPCHILDREN | WS_VSCROLL | ES_MULTILINE | ES_AUTOVSCROLL |
ES_LEFT | ES_WANTRETURN, rect, this, IDC_RICHEDITEX, NULL);
GetWindowRect(rect);
rect.bottom ++;
MoveWindow(rect, TRUE);
……
}
void CRichEditDemoDlg::OnSize(UINT nType, int cx, int cy)
{
CDialog::OnSize(nType, cx, cy);
// TODO: Add your message handler code here
CRichEditCtrlEx * richView = (CRichEditCtrlEx *)GetDlgItem(IDC_RICHVIEWEX);
CRichEditCtrlEx * richEdit = (CRichEditCtrlEx *)GetDlgItem(IDC_RICHEDITEX);
if (!richView || !richEdit)
return;
richView->MoveWindow(14, 15 , 346, 149);
richEdit->MoveWindow(14, 211, 346, 63);
}
问题是:
在 OnInitDialog()函数中的
GetWindowRect(rect);
rect.bottom ++;
MoveWindow(rect, TRUE);
这段代码如果没有的话,对话框上就不会显示控件,而rect.bottom ++;这句好像又没有什么意义
改成rect.right ++;也可以。
这是怎么回事?请达人们给我解释一下以上三句话的作用。
代码参考了http://www.codeproject.com/richedit/AnimatedEmoticon.asp,在此对作者dTianx 表示感谢.
这是我在CSDN社区的处女贴,还比较穷,给分不多,请大侠们卖个薄面,谢谢了。