2013-04-24 38 views
0

我想添加一个文本框到我的表单中(我希望从这个文本框输入数据到存储文件),但我无法获取文本盒子工作。文本框MFC SDI不会出现

贝娄是我试过的代码。为什么我的文本框不显示,以及如何正确地让文本框出现在我的视图中。

void CMy861a4VasilkovskiyView::OnDraw(CDC* pDC) 
{ 
    CMy861a4VasilkovskiyDoc* pDoc = GetDocument(); 
    ASSERT_VALID(pDoc); 
    if (!pDoc) 
     return; 
    const CString str("Hello"); 
    pDC->TextOut(0, 0, str); 
    CEdit m_edit; 
    CRect rect(20,20,10,10);// (85, 110, 180, 210); 

    m_edit.Create(WS_CHILD | WS_VISIBLE | WS_TABSTOP | 
      ES_AUTOHSCROLL | WS_BORDER, rect, this, ES_LEFT); 
    // m_edit.SetFocus(); 


    // TODO: add draw code for native data here 
} 

回答

2

我可以看到几个问题:

  1. 的OnDraw()不是创建的CEdit控制在正确的地方 - CMy861a4VasilkovskiyView ::创建()可能是最好的地方。如果将它放在OnDraw()中,则每次重绘视图时都会重新创建CEdit控件,这不是您想要的。
  2. 您的CEdit m_edit变量需要是您的CMy861a4VasilkovskiyView类的成员变量。这是它未被绘制的主要原因 - 此刻m_edit在绘制之前超出了范围。