2013-04-24 2 views
0

Я пытаюсь добавить текстовое поле в свою форму (по дороге я хотел передать данные, введенные из этого окна в Документ для хранения), но у меня возникли проблемы с получением текста чтобы работать.Текстовый блок MFC SDI не будет отображаться

Bellow - это код, который я пробовал. Почему мое текстовое поле не появляется, и как правильно получить текстовое поле для отображения в моем представлении.

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 :: Create(), вероятно, самое лучшее место. Если вы оставите его в OnDraw(), это будет обновлять элемент управления CEdit каждый раз при повторном просмотре представления, чего вы не хотите.
  2. Ваша переменная CEdit m_edit должна быть переменной-членом класса CMy861a4VasilkovskiyView. Это основная причина, по которой она не нарисована - на данный момент m_edit выходит за рамки, пока не нарисован.
Смежные вопросы