我刚学MFC,正在进行文本编程
我已经在View类的OnChar函数中有以下的代码实现主窗口的字符输入
CClientDC dc(this);
CFont *pOldFont=dc.SelectObject(&m_font);
TEXTMETRIC tm;
dc.GetTextMetrics(&tm);
if( 0x0d == nChar)
{ m_strArray.Add(m_strLine);
m_strLine.Empty();
m_ptOrigin.y += tm.tmHeight;
}
else if( 0x08 == nChar)
{
COLORREF clr = dc.SetTextColor(dc.GetBkColor());
dc.TextOut(m_ptOrigin.x,m_ptOrigin.y,m_strLine);
m_strLine = m_strLine.Left(m_strLine.GetLength() - 1);
dc.SetTextColor(clr);
}
else
{
m_strLine += char(nChar);
}
CSize sz = dc.GetTextExtent(m_strLine);
CPoint pt;
pt.x = m_ptOrigin.x + sz.cx;
pt.y = m_ptOrigin.y;
SetCaretPos(pt);
dc.SetTextColor(m_clr);
dc.TextOut(m_ptOrigin.x,m_ptOrigin.y,m_strLine);
dc.SelectObject(pOldFont);
但是当窗口的大小变化之后,输入的字符都没有了,那我在OnDraw函数中应该添加怎样的代码?
我已经在View类的OnChar函数中有以下的代码实现主窗口的字符输入
CClientDC dc(this);
CFont *pOldFont=dc.SelectObject(&m_font);
TEXTMETRIC tm;
dc.GetTextMetrics(&tm);
if( 0x0d == nChar)
{ m_strArray.Add(m_strLine);
m_strLine.Empty();
m_ptOrigin.y += tm.tmHeight;
}
else if( 0x08 == nChar)
{
COLORREF clr = dc.SetTextColor(dc.GetBkColor());
dc.TextOut(m_ptOrigin.x,m_ptOrigin.y,m_strLine);
m_strLine = m_strLine.Left(m_strLine.GetLength() - 1);
dc.SetTextColor(clr);
}
else
{
m_strLine += char(nChar);
}
CSize sz = dc.GetTextExtent(m_strLine);
CPoint pt;
pt.x = m_ptOrigin.x + sz.cx;
pt.y = m_ptOrigin.y;
SetCaretPos(pt);
dc.SetTextColor(m_clr);
dc.TextOut(m_ptOrigin.x,m_ptOrigin.y,m_strLine);
dc.SelectObject(pOldFont);
但是当窗口的大小变化之后,输入的字符都没有了,那我在OnDraw函数中应该添加怎样的代码?
把上面的代码封装成一个函数,函数的参数是OnChar里面的nChar,然后在OnDraw里面调用这个函数就可以了
CYourViewer::OnDraw(CDC* pDC)
{
int nSize = m_strArray.GetSize();
for(int i=0;i<nSize;i++)
{
string curStr = m_strArray.GetAt(i);
//逐条字符串输出
}
}