Смекни!
smekni.com

Системне програмне забезпечення С (стр. 2 из 4)

CDialog::OnInitDialog();

CListBox* p=(CListBox*)GetDlgItem(IDC_LIST);

p->AddString("6");

p->AddString("3");

p->AddString("5");

6.Відтворення карти повідомлень:

BEGIN_MESSAGE_MAP(CPashaWnd, CFrameWnd)

ON_COMMAND(ID_INPUT, OnInput)

ON_COMMAND(ID_INFO, OnInfo)

END_MESSAGE_MAP();

7.Створення об‘єкту діалогового вікна і його відображення:

CMyDialog dialog(this);

dialog.DoModal();

8.Створення функцій обробки результатів, що отримали з діалогового вікна.


5. Робота з графікою

Для графічного відображення результатів використовуються стандартні бібліотечні функції та класи. В WINDOWSдля виведення графіки потрібно використовувати контексти пристроїв:

- CDС – базовий клас DС, на основі якого створюються інші пристрої;

- CClientDC – виведення в робочу частину вікна;

- CPaintDC- визначення вікна, яке потрібно перерисовувати;

- CWindowDC- виведення на всю область вікна;

Основними інструментами, що використовуються в даній програмі є:

Pen– перо. Brush – пензель.. Color – логічний колір.

Для застосування цих інструментів їх потрібно створити та ініціалізувати. Створення та ініціалізація в даній курсовій роботі має слідуючий вид:

dc.SelectObject (&Pen3) – ініціалізація власних типів пер.

dc.SelectObject (&Вrush) – ініціалізація власного типу пензля.

Створення власних пер: Pen1 = Create Pen(PS_DOT,2,RGB(255,0,0)),

Pen2 = Create Pen(PS_SOLID,2,RGB(255,0,0)),

Pen3 = Create Pen(PS_DASH,2,RGB(255,0,0)) ..

Створення власного пензля: Brush. Create SolidBrush(RGB(0,255,255)).

Створення власних кольрів:RGB(n1, n2, n3), ni = 0-255,

RGB(255, 0, 0) – червоний, RGB(0, 0, 0) – чорний.

Спочатку потрібно об‘явити ці інструменти:

CPen pen1; CBrush brush1;

Висновки.

Даний курсова робота в деякій мірі розкриває можливості мови С++ пакету VisualC++ 6.0. тут можна побачити перевиги даного пакету над іншими як у вирішенні різного роду задач так і у інтерфейсі.

Так, як програма складається з окремих модулів, то кожний модуль можна використовувати для реалізації інших подібних програм, які необхідно виконати в стислий термін.

Таким чином, програмування на VisualC++ 6.0 та Assemblerвідкриває перед програмістом безмежну кількість варіантів та можливостей реалізації поставлених задач, а це досить важливо сьогодні, так як комп’ютери та комп’ютерні мережі та системи стали застосовуватись практично у всіх галузях народного господарства.

При вивченні основних можливостей VisualC++ 6.0 та об’єктно-орієнтованого програмування з використанням MFC – бібліотеки було встановлено і розглянуто частину принципово нових можливостей реалізації графічного інтерфейсу та модульного програмування, які є досить ефективні і мобільні .

Завдяки поєднанню програм на Visual С++ і Асемблері можна створити програму високого рівня, тобто програму, яка відповідає світовим стандартам по оформленню, швидкодії та іншим параметрам.

Створена система меню може застосовуватись не лише для реалізації поставленої задачі, а й для будь-якої іншої програми, тому що зміна пунктів меню, зовнішнього вигляду, виконання процесу робиться досить швидко і без будь-яких ускладнень.


Література


3. Створення меню.

В даній курсовій роботі меню має вигляд, що показаний в завданні. Меню являється найпростішим ресурсом, що забезпечує нам зручну роботу з програмою, служить візуальним помічником.

Типи повідомлень в бібліотеці MFC розподіляють:

1. Повідомлення Windows (WM_WindowsMessage).

2. Повідомлення від дочірніх вікон та кнопок – елементів керування.

3. Командні повідомлення – від меню та панелей інструментів.

Наведемо приклад обробки повідомлень від меню, що здійснюється в даній програмі.

DECLARE_MESEEAGE_MAP ( ) – таблиця реакцій, якя зв‘язує вибір команди меню з відповідною функцією обробки;

class CPashaWnd:public CFrameWnd

{

public:

CPashaWnd();

protected:

protected:

afx_msg void OnOpen();

afx_msg void OnSaveAs();

afx_msg void OnQuit();

afx_msg void OnDelete();

afx_msg void OnPaint();

afx_msg void OnInput();

afx_msg void OnHelp();

afx_msg void OnRun();

afx_msg void OnResult();

afx_msg void OnInfo();

DECLARE_MESSAGE_MAP()

};

BEGIN_MESSAGE_MAP(CPashaWnd, CFrameWnd)

ON_COMMAND(ID_OPEN,OnOpen)

ON_COMMAND(ID_SAVE,OnSaveAs)

ON_COMMAND(ID_DELETE,OnDelete)

ON_COMMAND(ID_QUIT,OnQuit)

ON_COMMAND(ID_INPUT,OnInput)

ON_COMMAND(ID_HELP,OnHelp)

ON_COMMAND(ID_RUN,OnRun)

ON_COMMAND(ID_INFO,OnInfo)

ON_COMMAND(ID_RESULT,OnResult)

ON_WM_PAINT()

END_MESSAGE_MAP();

void CPashaWnd::OnInput()

{

}

void CPashaWnd::OnHelp()

{

}

void CPashaWnd::OnRun()

{

}

void CPashaWnd::OnResult()

{

}

void CPashaWnd::OnInfo()

{

}

CPashaWnd::CPashaWnd()

{

Create(NULL,"My program",

WS_OVERLAPPEDWINDOW,rectDefault,NULL,

MAKEINTRESOURCE(IDR_MENU1)); };


7.Робота з файлами в VisualC++6.0

Зручний багатофункціональний інтерфейс даної роботи передбачає також і роботу з файлами, їх зберігання, відкриття, знищення, що є зручним для користувача. Робота з файлами здійснюється за допомогою бібліотеки <iostream.h>.

Всі функції роботи з файлами знаходяться в меню в пункті File:

Open Save Delete

Вибираємо потрібну нам функцію та файл, з яким будемо працювати за допомогою миші.

В змінній DlgOpen.GetPathName зберігається ім‘я файлу.

Функції реалізовані слідуючим чином: Open

void CPashaWnd::OnOpen()

{

CString m_Text;

створення стандартної панелі вибору файлуOpen

CFileDialog DlgOpen(TRUE,(LPCSTR)"*",NULL,

OFN_HIDEREADONLY,(LPCSTR)" ALL Files (*.*) |*.*||");

відображения стандартної панелі вибору файлу

if(DlgOpen.DoModal()==IDOK)

відкриття файлу і зчитування:

FILE *f = fopen(dlg.GetPathName(), "rt");

if (f == NULL)

{

AfxMessageBox("Can'topen file");

return;

}

int i;

char str[101], acBuf[1001];

acBuf[0] = '&bsol;0';

for (i = 0; i < 10; i++)

{

if (fgets(str, 100, f) == NULL)

break;

::lstrcat(acBuf, str);

}

MessageBox(acBuf, dlg.GetPathName(),

MB_ICONINFORMATION | MB_OK);

fclose(f);

}

Save

void CPashaWnd::OnFSaveAs()

{

char filter[] = "Text Files (*.txt)|*.txt|All Files (*.*)|*.*|";

CFileDialog dlg(FALSE, "*.txt",NULL, OFN_HIDEREADONLY | OFN_OVERWRITEPROMPT,filter);

if (dlg.DoModal() == IDOK)

{

FILE *f = fopen(dlg.GetPathName(), "wt");

if (f == NULL)

{

AfxMessageBox("Can'topen file");

return;

}

char acBuf[400];

if (fMatrFilled)

{

Calc();

::wsprintf(acBuf, "Result = %d", result);

}

else

::strcpy(acBuf, "Matrix has not inputed");

fputs(acBuf, f);

::wsprintf(acBuf, "File : %s succesfully saved", dlg.GetPathName());

MessageBox(acBuf, "File Saving",

MB_ICONEXCLAMATION | MB_OK);

fclose(f);

}

}

Delete

void CPashaWnd::OnFDelete()

{ char filter[] = "Text Files (*.txt)|*.txt|All Files (*.*)|*.*|";

CFileDialog dlg(TRUE,"*.txt",NULL,OFN_HIDEREADONLY, filter);

if (dlg.DoModal() == IDOK)

{

::remove(dlg.GetPathName());

MB_ICONINFORMATION | MB_OK);

}

}

Виведення повідомлення після виконання операції

MessageBox("Succesfully deleted", dlg.GetPathName(),


6. Виконання обробки матриці на Асемблері

Основні функції Асемблера

Головні функції та переривання, що були використані при програмуванні на мові Асемблера в даній курсовій роботі:

Функція 03сh переривання 21h – створення файлу; в СХ – атрибути файлу, DS:DX – специфікація файлу. В АХ повертає значення відкритого каналу для цього файлу.

Функція 03dh переривання 21h – відкрити файл; в AL – режим доступу до файлу, DS:DX – специфікація файлу.

Функція 03eh переривання 21h – закрити файл; BX– номер каналу.

Функція 03fh переривання 21h – читання з файлу або пристрою; BX– номер каналу, СX – кількість байт, що зчитуються, DS:DX буфер.

Функція 042h переривання 21h – перемістити покажчик файлу; BX– номер каналу, CX:DX– зміщення покажчика.

Взаємодія Асемблера та проекту мовою VisualC++6.0

Для підключення файлу Асемблера до проекту треба виконати наступні дії:

Під час створення проекту задати режим не Win32, а 16.

Після створення проекту підключити до нього вручну сам файл Асемблера через контекстне меню.

Переписати в каталог, де міститься проект сам Асемблер “TASM32.EXE”.

Написати програму на Асемблері за правилами інтерфейсу С++:

Повинна співпадати модель пам‘яті (по умовчанню LARGE)

Використовувати скорочені назви сегменту.

Всі зовнішні імена на Асемблері повинні мати знак підкреслення “__”.

Імена зовнішніх змінних і в Асемблері, і в С++ повинні бути однакові з урахуванням регістра.

Після введення даних в діалогове вікно вони записуються в файл “in.dat”

Програма на Асемблері зчитує з дані з цього файлу та перетворює їх в число.

Над даними виконати арифметичні дії.

Результати виконання програми записати в файл “out.dat”.

Програма мовою VisualС++ зчитує ці дані з файлу і виводить результат на екран .

Якщо результат вивели на екран – основна задача та мета роботи досягнута.

Додаток 1.

Лістинг програми мовою С++ паекту VisualC++6.0

#include <afxwin.h>

#include "resource.h"

#include<stdlib.h>

#include <stdio.h>

#include <conio.h>

#include <afxdlgs.h>

#include <iostream.h>

#include <fstream.h>

char str2[300];

int radio1=1,radio2=0,radio3=0; int t, i, j;

char str[80];

char buf1[80];

char buf2[80];

int matrix[20][20];

char str1[300],listStr[10];

int index,inde,ind=10;

short int average ,max,min;

class CMyDialog:public CDialog

{

public:

CString m_text;

CMyDialog():CDialog(IDD_DIALOG) { m_text=_T("text"); }

protected:

afx_msg void OnInput();

virtual void DoDataExchange(CDataExchange *pDX);

BOOL OnInitDialog();

afx_msg void OnLIST2();

afx_msg void OnLIST3();

DECLARE_MESSAGE_MAP()

};

BEGIN_MESSAGE_MAP(CMyDialog,CDialog)

ON_COMMAND(IDC_OK,OnInput)

ON_LBN_DBLCLK(IDC_LIST2,OnLIST2)

ON_LBN_DBLCLK(IDC_LIST3,OnLIST3)

END_MESSAGE_MAP()

void CMyDialog::DoDataExchange(CDataExchange *pDX)

{

CDialog::DoDataExchange(pDX);

DDX_Text(pDX,IDC_EDIT1,m_text);

//AfxMessageBox(m_text);

}

void CMyDialog::OnInput()

{

//CEdit *ped=(CEdit*)GetDlgItem(IDC_EDIT1);

//ped->GetWindowText(str1,sizeof(str1-1));

//AfxMessageBox(str1);

//CDialog::OnOk();

GetDlgItemText(IDC_EDIT1,str1,255);

{char t[10];

int arr[10];

int i=0,n=0,j=0,m=0;

while(str1[n]!='&bsol;0')

{

while(isdigit(str1[n]))

{

t[i++]=str1[n];

n++;

}

if(i>0)

{t[i]='&bsol;0';i=0;arr[m++]=atoi(t);}

n++;

}

int a=50,b=80;

i=0;

//initialization of matrix by the numbers inputed in edit box

//int matrix[20][20];

for(m=0;m<ind;m++)

for(n=0;n<inde;n++)

matrix[m][n]=arr[i++];

_int16 *NewArray16=new _int16[ind*inde];

m=0;

for(i=0;i<ind;i++)

for(j=0;j<inde;j++)

NewArray16[m++]=(_int16)matrix[i][j];

for(m=0;m<ind*inde;m++)

{

NewArray16[m]=(_int16)matrix[i][j];

if(j==inde)

{

i++;j=0;

}

j++;

if(i==ind)

break;

} }

SendMessage(WM_CLOSE);

}

BOOL CMyDialog::OnInitDialog()

/* CButton*cbpr1=(CButton*)GetDlgItem(IDC_RADIO1);