Re[2]: SDI & input text?
От: Аноним  
Дата: 17.10.06 08:21
Оценка:
Здравствуйте, febus, Вы писали:

F>Создай новый проект и выбери в визарде (вместо стандартного CView по умолчанию) вид CEditView.

F>Все, задание выполнено

О, да! спасибо! волшебные волшебники рулят!

теперь возникла следующая проблемка:
я делаю новый диалог, в него я могу вводить текст(Edit Control). Теперь нужно что бы этот текст при нажатии на ОК выводился в главном окне. Когда был просто класс CView я это сделал, но при использовании CEditView в нем пропал метод
virtual void OnDraw(CDC* pDC);
Ну я думал добавлю его, сделаю как при CView и будет все нормально, но нет. Все хорошо компилится но не работает, не выводится этот текст в главное окно.

Я добавлял следующий код:
мой диалог
"FromDlgToWindow.срр"

#include "stdafx.h"
#include "mylab.h"
#include "FromDlgToWindow.h"
#include ".\fromdlgtowindow.h"
// CFromDlgToWindow dialog
IMPLEMENT_DYNAMIC(CFromDlgToWindow, CDialog)
CFromDlgToWindow::CFromDlgToWindow(CWnd* pParent /*=NULL*/)
    : CDialog(CFromDlgToWindow::IDD, pParent)
//////////////////////////////
    , m_text(_T(""))
//////////////////////////////
{
}
CFromDlgToWindow::~CFromDlgToWindow()
{
}
void CFromDlgToWindow::DoDataExchange(CDataExchange* pDX)
{    CDialog::DoDataExchange(pDX);
//////////////////////////////////////////////
    DDX_Text(pDX, IDC_EDIT1, m_text);
//////////////////////////////////////////////
}
BEGIN_MESSAGE_MAP(CFromDlgToWindow, CDialog)
////////////////////////////////////
ON_BN_CLICKED(IDOK, OnBnClickedOk)
///////////////////////////////////
END_MESSAGE_MAP()

////////////////////////////////////
void CFromDlgToWindow::OnBnClickedOk()
{
    UpdateData(true);
    OnOK();
}
///////////////////////////////////////

"FromDlgToWindow.h"
#pragma once
#include "afxwin.h"
// CFromDlgToWindow dialog
class CFromDlgToWindow : public CDialog
{    DECLARE_DYNAMIC(CFromDlgToWindow)
public:
    CFromDlgToWindow(CWnd* pParent = NULL);   // standard constructor
    virtual ~CFromDlgToWindow();
// Dialog Data
    enum { IDD = IDD_DIALOG1 };
protected:
    virtual void DoDataExchange(CDataExchange* pDX);    // DDX/DDV support
    DECLARE_MESSAGE_MAP()
public:
/////////////////////////////////////////
    afx_msg void OnBnClickedOk();
    CString m_text;
/////////////////////////////////////////
    };

и далее следующее
"mylabDoc.h"
class CmylabDoc : public CDocument
{ .....
// Attributes
public:
///////////////////////////////////////////////////////////
    CString StringData;
////////////////////////////////////////////////////////////
....}

"mylabDoc.cpp"
....
CmylabDoc::CmylabDoc()
{
////////////////////////////////////////////////////////////
    StringData="";
//////////////////////////////////////////////////////////////
}
....

"mylabView.cpp"
добавил OnDraw (прототип не забыл в mylabView.h кинуть)
.......
void CmylabView::OnDraw(CDC* pDC)
{    CmylabDoc* pDoc = GetDocument();
    ASSERT_VALID(pDoc);
    ///////////////////////////////////////////
    pDC->TextOut(0,0,pDoc->StringData
    ///////////////////////////////////////////
    
}
......
#include "FromDlgToWindow.h"
void CmylabView::OnDialog1()
{    
    CFromDlgToWindow t;
    int result=t.DoModal();
if (result==IDOK)
{CmylabDoc* pDoc=GetDocument();
ASSERT_VALID(pDoc);
pDoc->StringData=t.m_text;
Invalidate();

    //t1.DoModal();
}
}

ну так вот, помогите сделать что бы работало, плз.в чем ошибка?

и еще, при использовании CEditView куда записывается тот текст который мы можем вводить в главном окне?
мне нужно будет вывести этот текст в другой диалог.(обратное дейсвие вышеопсанному )

заранее спасибо
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.