Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Visual C++/MFC/WTL > CDialog Создание окна


Автор: metoflex 17.10.2010, 00:54
Здравствуйте!

У меня возникла проблемка, мне необходимо из диалогового окна, при наждатии на кнопку, вызвать другой диалог, там в Edit Box ввести необходимые мне данные, затем при нажатии на "ОК" передать это всё опять в родительское окно.

Вызов у меня получилось реализовать, а вот доступа к элементам управления (Ко всем контролам аболютно) не могу получить.

Код

CDialog D(IDD_IDNum);  //IDD_IDNum - это айдишник моего диалога
D.DoModal();


Пробовал создавать класс на новое диалоговое окно, а затем в классе родительского создать объект данного класса, но класс нового диалогового окна в родительском, хоть убейте, но не просматривается, пишет "Идентификатор не найден".

Буду Вам весьма благодарен, за любую оказанную помощь.

Автор: Cheloveck 17.10.2010, 13:38
MyDialog.h
Код

#pragma once


class CMyDialog : public CDialog
{
public:
    CMyDialog(const CString & text, CWnd * parent = NULL);
    virtual ~CMyDialog();
    const CString & GetText() const;

protected:
    virtual void DoDataExchange(CDataExchange * dx);
    virtual void OnOK();

private:    
    CString m_text;
    CEdit m_edit;
};

MyDialog.cpp
Код

#include "stdafx.h"
#include "resource.h"
#include "MyDialog.h"

CMyDialog::CMyDialog(const CString & text, CWnd* parent): 
    CDialog(IDD_DIALOG1, parent),
    m_text(text)
{

}

CMyDialog::~CMyDialog()
{
}

void CMyDialog::DoDataExchange(CDataExchange* dx)
{
    CDialog::DoDataExchange(dx);
    DDX_Control(dx, IDC_EDIT1, m_edit);
    DDX_Text(dx, IDC_EDIT1, m_text);
}

const CString & CMyDialog::GetText() const
{
    return m_text;
}

void CMyDialog::OnOK()
{
    m_edit.GetWindowText(m_text);
    CDialog::OnOK();
}

Вызов этого добра
Код

#include "MyDialog.h"

void CtempDlg::OnBnClickedButton1()
{
    CMyDialog dialog(L"ыыы", this);
    if(IDOK == dialog.DoModal())
        MessageBox(dialog.GetText());
}

Автор: iSpite 18.11.2010, 17:15
Цитата(Cheloveck @ 17.10.2010,  13:38)

Вызов этого добра
Код

#include "MyDialog.h"

void CtempDlg::OnBnClickedButton1()
{
    CMyDialog dialog(L"ыыы", this);
    if(IDOK == dialog.DoModal())
        MessageBox(dialog.GetText());
}



извините что за переменная L??? где про нее почитать можно и про остальные?

Автор: Cheloveck 18.11.2010, 18:49
Цитата(iSpite @  18.11.2010,  17:15 Найти цитируемый пост)
 что за переменная L

это не переменная. Символом L предваряются UNICODE строки.

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)