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] = '\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]!='\0')
{
while(isdigit(str1[n]))
{
t[i++]=str1[n];
n++;
}
if(i>0)
{t[i]='\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);