none
CEdit RRS feed

  • Pergunta

  • Sou novo em mfc , e estou apanhando para aprender ...

    Quero comolar um CEdit control em meu programa . Compila ok , mas na hora de rodar da um erro ...

    Code Snippet


    class CMyApp : public CWinApp
    {
    public:
        virtual BOOL InitInstance ();
    };

    class CMainWindow : public CFrameWnd
    {
    public:
        CMainWindow ();

    protected:

       
        CEdit m_wndEdit;

      
       

        afx_msg void OnPaint ();
        DECLARE_MESSAGE_MAP ()
    };



    --------------------------------------------



    #include "stdafx.h"
    #include "inteligencia_artificial.h"

    #define IDC_EDIT    100
    #define IDC_BUTTON  101


    /////////////////////////////////////////////////////////////////////////////
    // The one and only application object

    CMyApp myApp;

    /////////////////////////////////////////////////////////////////////////
    // CMyApp member functions

    BOOL CMyApp::InitInstance ()
    {
        m_pMainWnd = new CMainWindow;
       

       m_pMainWnd->ShowWindow (m_nCmdShow);
        m_pMainWnd->UpdateWindow ();
        return TRUE;
    }

    /////////////////////////////////////////////////////////////////////////
    // CMainWindow message map and member functions

    BEGIN_MESSAGE_MAP (CMainWindow, CFrameWnd)
        ON_WM_PAINT ()
    END_MESSAGE_MAP ()

    CMainWindow::CMainWindow ()
    {
        Create (NULL, _T ("Inteligencia Artificial"));
    }

    void CMainWindow::OnPaint ()
    {
        CPaintDC dc (this);
       
        CRect rect;
        GetClientRect (&rect);


        dc.DrawText (_T ("Centro"), -1, &rect, DT_SINGLELINE | DT_CENTER | DT_VCENTER);
        dc.DrawText (_T ("Esqueta"), -1, &rect, DT_SINGLELINE | DT_LEFT | DT_VCENTER);
        dc.DrawText (_T  ("Direita"), -1 , &rect , DT_SINGLELINE | DT_RIGHT | DT_VCENTER);


        m_wndEdit.Create(WS_CHILD | WS_VISIBLE | WS_BORDER | ES_AUTOHSCROLL , CRect(90,90,200,110) , this , IDC_EDIT);
       
        m_wndEdit.SetWindowText("Isso é um teste !");

       


    }


    segunda-feira, 28 de maio de 2007 22:26

Todas as Respostas

  • Não sei muito bem o que você está tentando fazer, mas a minha sugestão seria de colocar o codigo em um CView em vez um CFrameWnd.

     

    logo no OnPaint, vc teria o codigo que tinha o "Centro, Esquerda, Direita"... isso iria mostrar os mesmos na View.

     

    Ex:

     

    Code Snippet

    void CCEditForumView::OnPaint()

    {

    CPaintDC dc(this); // device context for painting

    // TODO: Add your message handler code here

    // Do not call CView::OnPaint() for painting messages

    CRect rect;

    GetClientRect (&rect);

     

    dc.DrawText(_T("Centro"), -1, &rect, DT_SINGLELINE | DT_CENTER | DT_VCENTER);

    dc.DrawText (_T ("Esqueta"), -1, &rect, DT_SINGLELINE | DT_LEFT | DT_VCENTER);

    dc.DrawText (_T ("Direita"), -1 , &rect , DT_SINGLELINE | DT_RIGHT | DT_VCENTER);

    }

     

     

    e quanto ao CEdit, mesma coisa, vai para a CView, só que em vez de criar no OnPaint, o ideal é que vc sobrescreva o

    "OnInitialUpdate", e coloque a chamada ao Create lá.

     

    Ex:

     

    Code Snippet

    void CCEditForumView::OnInitialUpdate()

    {

    CView::OnInitialUpdate();

    // TODO: Add your specialized code here and/or call the base class

     

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

    m_wndEdit.Create(WS_CHILD | WS_VISIBLE | WS_BORDER | ES_AUTOHSCROLL , CRect(90,90,200,110) , this , IDC_EDIT);

    m_wndEdit.SetWindowText(L"Isso é um teste !");

    }

     

     

    não sei qual o layout que vc planejou... mas aqui ficou assim:

     

    http://img179.imageshack.us/img179/8133/mfcch9.jpg

     

    []'s

     

    Waner Tavares

    terça-feira, 5 de junho de 2007 22:25