Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Лаб.DOC
Скачиваний:
7
Добавлен:
16.05.2015
Размер:
662.02 Кб
Скачать

4.7.2 Організацію обміну даними з полем введення Edit

Розглянемо введення однорозрядного числа з використанням змінної-властивості m_editкатегоріїControl. Після першого відображення діалогового вікна на екрані поле введенняEditмає бути ініціалізовано текстовим рядком"Text". Далі користувач замість цього рядка вводить однорозрядне число, натискає кнопкуOkта закриває діалогове вікно. Результатом обробки введеного числа повинно бути його подвоєння.

1.Створення власного класу діалогу, похідного від бібліотечного класу CDialog.

class CMyDialog : public CDialog

{

public:

CMyDialog(CWnd* pParent = NULL);

enum { IDD = IDD_DIALOG1 };

CEdit m_edit;

protected:

virtual void DoDataExchange(CDataExchange* pDX);

protected:

virtual void OnOK();

virtual void OnCancel();

virtual BOOL OnInitDialog();

DECLARE_MESSAGE_MAP()

}; .

2. Ініціалізація ЕК діалогового вікна.

BOOL CMyDialog::OnInitDialog()

{

CDialog::OnInitDialog();

m_edit.SetWindowText(CString("Text"));

return TRUE;

} .

3. Організація обміну даними з ЕК діалогового вікна.

void CMyDialog::DoDataExchange(CDataExchange* pDX)

{

CDialog::DoDataExchange(pDX);

DDX_Control(pDX, IDC_EDIT1, m_edit);

} .

4. Створення об’єкта власного класу діалогу та його активація.

CMyDialog dialog;

dialog.DoModal(); .

5. Обробка введених користувачем даних в діалоговому вікні.

void CMyDialog::OnOK()

{

char str[80];CString tmp;

tmp="";

m_edit.GetWindowText(str,80);

tmp=tmp+str[0];

CDialog::OnOK();

} .

6. Використання результатів введених даних.

int y;

y=atoi(tmp)*2; .

Розглянемо введення однорозрядного числа з використанням змінної-властивості m_editкатегоріїValue. Всі інші умови такі ж, як у попередньому прикладі.

1.Створення власного класу діалогу, похідного від бібліотечного класу CDialog.

class CMyDialog : public CDialog

{

public:

CMyDialog(CWnd* pParent = NULL);

enum { IDD = IDD_DIALOG1 };

CString m_edit;

protected:

virtual void DoDataExchange(CDataExchange* pDX);

protected:

virtual void OnOK();

virtual void OnCancel();

virtual BOOL OnInitDialog();

}; .

2. Ініціалізація ЕК діалогового вікна.

BOOL CMyDialog::OnInitDialog()

{

CDialog::OnInitDialog();

m_edit="Text";

UpdateData(FALSE);

return TRUE;

} .

3. Організація обміну даними з ЕК діалогового вікна.

void CMyDialog::DoDataExchange(CDataExchange* pDX)

{

CDialog::DoDataExchange(pDX);

DDX_Text(pDX, IDC_EDIT1, m_edit);

DDV_MaxChars(pDX, m_edit, 255);

} .

4. Створення об’єкту власного класу діалогу та його активація.

CMyDialog dialog;

dialog.DoModal();

5. Обробка введених користувачем даних в діалоговому вікні.

void CMyDialog::OnOK()

{

CString str; CString tmp; tmp="";

tmp=tmp+m_edit[0];

UpdateData(TRUE);

CDialog::OnOK();

} .

6. Використання результатів введених даних.

int y;

y=atoi(tmp)*2; .

Тепер наведемо текст програми повністю.

#include <afxwin.h>

#include <stdio.h>

#include <iostream.h>

#include <fstream.h>

#include <afxdlgs.h>

#include "Resource.h"

CString str[80];

char buf[80];

int Number;

int type;

int N;

CString tmp;

class CMyDialog : public CDialog

{

public:

CMyDialog(CWnd* pParent = NULL);

enum { IDD = IDD_MATRIXDIALOG };

CListBox m_size;

int m_datatype;

CEdit m_matrix;

protected:

virtual void DoDataExchange(CDataExchange* pDX);

protected:

virtual void OnOK();

virtual void OnCancel();

virtual BOOL OnInitDialog();

DECLARE_MESSAGE_MAP()

};

CMyDialog::CMyDialog(CWnd* pParent)

: CDialog(CMyDialog::IDD, pParent)

{

m_datatype = 1;

}

void CMyDialog::DoDataExchange(CDataExchange* pDX)

{

CDialog::DoDataExchange(pDX);

DDX_Control(pDX, IDC_MATRIXSIZE, m_size);

DDX_Radio(pDX, IDC_BYTE, m_datatype);

DDX_Control(pDX, IDC_TEXTMATRIX, m_matrix);

}

BEGIN_MESSAGE_MAP(CMyDialog, CDialog)

END_MESSAGE_MAP()

void CMyDialog::OnOK()

{

char str[80];

tmp="";

Number=m_size.GetCurSel();

m_size.GetText(Number,str);

m_matrix.GetWindowText(str,80);

tmp=tmp+str[0];

MessageBox(str,"Result");

CDialog::OnOK();

}

void CMyDialog::OnCancel()

{

CDialog::OnCancel();

}

BOOL CMyDialog::OnInitDialog()

{

CDialog::OnInitDialog();

int i;

char str[10];

for(i=2; i<11; i++)

{

wsprintf(str,"%d",i);

m_size.AddString(str);

}

m_size.SetCurSel(1);

m_matrix.SetWindowText(CString("Text"));

return TRUE;

}

class CMyFrameWnd:public CFrameWnd

{

public:

CMyFrameWnd();

protected:

afx_msg void OnInput();

afx_msg void OnRun();

afx_msg void OnResult();

afx_msg void OnQuit();

afx_msg void OnAbout();

afx_msg void OnHelp();

DECLARE_MESSAGE_MAP();

};

BEGIN_MESSAGE_MAP(CMyFrameWnd,CFrameWnd)

ON_COMMAND(ID_CALC_INPUT,OnInput)

ON_COMMAND(ID_CALC_RUN,OnRun)

ON_COMMAND(ID_CALC_RESULT,OnResult)

ON_COMMAND(ID_FILE_QUIT,OnQuit)

ON_COMMAND(ID_INFO,OnAbout)

ON_COMMAND(ID_HELP,OnHelp)

END_MESSAGE_MAP()

CMyFrameWnd::CMyFrameWnd()

{

Create(NULL,"program of kurs work",WS_OVERLAPPEDWINDOW,rectDefault,

NULL,MAKEINTRESOURCE(IDR_MENU1));

};

void CMyFrameWnd::OnInput()

{

CMyDialog dialog;

if(dialog.DoModal()==IDOK)

type=dialog.m_datatype;

}

void CMyFrameWnd::OnRun()

{

char s[80]; int y;

y=atoi(tmp)*2;

wsprintf(s,"%d",y);

MessageBox(s,"Result");

}

void CMyFrameWnd::OnResult()

{

char s[80];

CClientDC dc(this);

wsprintf(s,"Number is %d",Number+1);

dc.TextOut(100,200,s);

wsprintf(s,"Type is %d",type);

dc.TextOut(200,200,s);

}

void CMyFrameWnd::OnQuit()

{

exit(0);

}

void CMyFrameWnd::OnAbout()

{

::MessageBox(NULL,"Copyright by Semerenko","About",MB_OK|

MB_ICONEXCLAMATION);

}

void CMyFrameWnd::OnHelp()

{

::MessageBox(NULL,"Copyright by Semerenko","Help",MB_OK|

MB_ICONEXCLAMATION);

}

class CMyApp:public CWinApp

{

public:

virtual BOOL InitInstance();

};

BOOL CMyApp::InitInstance()

{

CMyFrameWnd *pMainWnd=new CMyFrameWnd;

m_pMainWnd=pMainWnd;

m_pMainWnd->ShowWindow(SW_SHOW);

m_pMainWnd->UpdateWindow();

SetDialogBkColor(RGB(0,0,255));

return TRUE;

};

CMyApp app; .

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]