CComboBox - комбінований список 


Мы поможем в написании ваших работ!



ЗНАЕТЕ ЛИ ВЫ?

CComboBox - комбінований список



//обробник події BN_CLICKED

void CMy1Dlg::OnBnClickedButton1()

{

//m_combo1-комбінований список класу CComboBox

CString s;//рядок

m_combo1.GetWindowTextW(s);//отримати текст з поля редагування комбінованого списку m_combo1

m_combo1.AddString(s);//добавити рядок у список

m_combo1.AddString(L"String1");//добавити рядок у список

m_combo1.InsertString(1,L"String2");//вставити рядок у список в позицію 1

m_combo1.SetCurSel(1);//вибрати позицію 1

}

//обробник події CBN_SELCHANGE (вибір змінено)

void CMy1Dlg::OnCbnSelchangeCombo1()

{

CString s;//рядок

m_combo1.GetLBText(m_combo1.GetCurSel(),s);//помістити в рядок s текст з вибраного рядка списку

m_button1.SetWindowTextW(s);//установити надпис на кнопці m_button1

}

 

CString - рядок

//обробник події BN_CLICKED

void CMy1Dlg::OnBnClickedButton2()

{

UpdateData();//отримати дані з елементів керування

CString s("hello");//рядок s класу CString

s+=m_edit1;//добавити вміст рядка m_edit1 класу CString

s.Trim();//видалити пробіли

if (s!=m_edit1) s=s.Mid(2,4);//якщо рядки s і m_edit1 не рівні то помістити в рядок s 4 символи рядка s починаючи з 2 позиції

s.SetAt(1,L'*');//установити в позицію 1 символ '*'

s.Insert(1,L"string");//вставити в позицію 1 рядок "string"

int i=s.Find(L"str",0);//знайти позицію рядка "str" в рядку s

s.Format(L"%s%d%s%.3f",m_edit1,s.GetLength()," ",2.2513);//помістити в рядок дані різного типу

wchar_t *p=s.GetBuffer();//перетворити в тип wchar_t *

s=p;//присвоїти рядку CString дані типу wchar_t *

char *p2=new char[s.GetLength() + 1];//рядок типу char * довжиною s+1

wcstombs_s(0, p2, s.GetLength() + 1, s, _TRUNCATE);//перетворити в тип char *

s=p2;//присвоїти рядку CString дані типу char *

double x;//дійсна змінна

s="-12.4583";

x=_wtof(s);//конвертувати рядок в дійсне

int n;//ціла змінна

s="-10";

n=_wtoi(s);//конвертувати рядок в ціле

m_edit1=s;//присвоїти рядку m_edit1 рядок s

UpdateData(false);//помістити дані в елементи керування

}

 

CImage - рисунок, CDC - контекст пристрою

void CMy6Dlg::OnBnClickedButton1()

{

//отримати вказівник на Picture Control

CStatic *s=(CStatic*)GetDlgItem(IDC_STATIC);

//рисунок

CImage image;//включіть atlimage.h у ваш файл stdafx.h

CFileDialog dlg(true);//діалог відкриття файлу

dlg.DoModal();//зробити модальним

image.Load(dlg.GetFileName());//завантажити рисунок

CDC *pDC=s->GetDC();//контекст пристрою Picture Control

CDC *iDC=CDC::FromHandle(image.GetDC());//контекст пристрою рисунку

iDC->MoveTo(20,0);//перемістити поточну позицію

iDC->LineTo(20,20);//рисувати лінію з поточної позиції

image.ReleaseDC();//вивільнити DC

image.Draw(pDC->GetSafeHdc(),0,0);//рисувати рисунок на Picture Control

CFileDialog sdlg(false);//діалог збереження файлу

sdlg.DoModal();//зробити модальним

image.Save(sdlg.GetFileName());//зберегти рисунок

}

 

CClientDC - контекст пристрою, CPoint - точка

//обробник події WM_MOUSEMOVE

void CMy7Dlg::OnMouseMove(UINT nFlags, CPoint point)

{

if (nFlags&&MK_LBUTTON)//якщо натиснута ліва клавіша миші

{

static CPoint anchor=point;//точка для збереження попередніх координат

CClientDC *pDC=new CClientDC(this);//отримати вказівник на контекст пристрою

pDC->MoveTo(anchor.x,anchor.y);//перемістити до точки anchor

pDC->LineTo(point.x,point.y);//рисувати лінію до точки point

anchor=point;//запам’ятати точку

delete pDC;//знищити pDC

}

CDialog::OnMouseMove(nFlags, point);//обробник базового класу

}

Створення додатків Win32 з графічним інтерфейсом

Постановка задачі: за допомогою бібліотеки MFC створити додаток Win32 з графічним інтерфейсом. В головному вікні програми розмістити елемент керування – поле, запрограмувати функцію-обробник повідомлення натиску на кнопку, яка виводить в поле слово "Hello".

Примітка: Borland C++ Builder 6 містить бібліотеку MFC 6.0 та дозволяє конвертацію проектів Microsoft Visual C++.

 

Код програми

//My_MFC.h: файл з класом додатку#pragma once#ifndef __AFXWIN_H__ #error "include 'stdafx.h' before including this file for PCH"#endif#include "resource.h"//заголовочний файл з макросами ресурсів//клас додатку CMy_MFCApp успадкований від CWinAppclass CMy_MFCApp: public CWinApp{public:CMy_MFCApp();//конструкторvirtual BOOL InitInstance();//функція ініціалізаціїDECLARE_MESSAGE_MAP()//декларація карти повідомлень};//специфікатор вказує, що theApp визначений в окремому файліextern CMy_MFCApp theApp; //My_MFCDlg.h: файл з класом діалогового вікна#pragma once#include "afxwin.h"//клас діалогового вікна CMy_MFCDlg успадкований від CDialogclass CMy_MFCDlg: public CDialog{public:CMy_MFCDlg(CWnd* pParent = NULL);//стандартний конструкторenum { IDD = IDD_MY_MFC_DIALOG };protected:virtual void DoDataExchange(CDataExchange* pDX);//підтримка DDX/DDVprotected:HICON m_hIcon;//іконка//функції-обробники повідомленьvirtual BOOL OnInitDialog();afx_msg void OnPaint();afx_msg HCURSOR OnQueryDragIcon();DECLARE_MESSAGE_MAP()//декларація карти повідомленьpublic:afx_msg void OnBnClickedOk();public:CEdit edit1;//елемент керування поле edit1}; // My_MFC.cpp: визначення поведінки класу додатку#include "stdafx.h"//заголовочні файли MFC#include "My_MFC.h"//файл класу додатку#include "My_MFCDlg.h"//файл класу діалогу#ifdef _DEBUG#define new DEBUG_NEW#endif//макрос карти повідомлень для CMy_MFCApp, базовий клас CWinAppBEGIN_MESSAGE_MAP(CMy_MFCApp, CWinApp) ON_COMMAND(ID_HELP, &CWinApp::OnHelp)//відповідає OnHelpEND_MESSAGE_MAP()//конструктор CMy_MFCAppCMy_MFCApp::CMy_MFCApp(){}//створити об’єкт-додаток класу CMy_MFCAppCMy_MFCApp theApp;//ініціалізація додаткуBOOL CMy_MFCApp::InitInstance(){CWinApp::InitInstance();//виклик функції базового класу//зберігати інформацію додатку в реєстріSetRegistryKey(_T("Local AppWizard-Generated Applications"));CMy_MFCDlg dlg;//створити об’єкт-діалогове вікно класу CMy_MFCDlgm_pMainWnd = &dlg;//указує на головне вікноINT_PTR nResponse = dlg.DoModal();//викликати як модальнеif (nResponse == IDOK)//якщо натиснуто OK {}else if (nResponse == IDCANCEL)//якщо натиснуто Cancel{}return FALSE;//вихід з додатку} // My_MFCDlg.cpp: визначення поведінки класу діалогового вікна//у файлі stdafx.h підключені заголовочні файли MFC такі як://#include <afxwin.h>//ядро MFC і стандартні компоненти//#include <afxext.h>//розширення MFC#include "stdafx.h"#include "My_MFC.h"//файл класу додатку#include "My_MFCDlg.h"//файл класу діалогу#ifdef _DEBUG#define new DEBUG_NEW#endif//конструктор CMy_MFCDlgCMy_MFCDlg::CMy_MFCDlg(CWnd* pParent /*=NULL*/): CDialog(CMy_MFCDlg::IDD, pParent){m_hIcon = AfxGetApp()->LoadIcon(IDR_MAINFRAME);}//завантажити іконку//виконує обмін даними членів з елементами керуванняvoid CMy_MFCDlg::DoDataExchange(CDataExchange* pDX){CDialog::DoDataExchange(pDX);DDX_Control(pDX, IDC_EDIT1, edit1);}//макрос карти повідомлень класу CMy_MFCDlg, базовий клас - CDialogBEGIN_MESSAGE_MAP(CMy_MFCDlg, CDialog) ON_WM_PAINT()//відповідає OnPaint ON_WM_QUERYDRAGICON()//відповідає OnQueryDragIcon ON_BN_CLICKED(IDOK, &CMy_MFCDlg::OnBnClickedOk)//відповідає OnBnClickedOkEND_MESSAGE_MAP()//обробники повідомлень класу CMy_MFCDlg//реалізація OnInitDialog - ініціалізація діалогового вікнаBOOL CMy_MFCDlg::OnInitDialog(){CDialog::OnInitDialog();//виклик функції базового класуSetIcon(m_hIcon, TRUE);//установка великої іконки для діалогуSetIcon(m_hIcon, FALSE);//установка малої іконки для діалогуreturn TRUE; //повертає TRUE, якщо ви установлюєте фокус в елемент керування}//реалізація OnPaint, викликається при необхідності перерисування void CMy_MFCDlg::OnPaint(){if (IsIconic()){CPaintDC dc(this); //контекст пристрою для рисування//надіслати повідомлення WM_ICONERASEBKGNDSendMessage(WM_ICONERASEBKGND, reinterpret_cast<WPARAM>(dc.GetSafeHdc()), 0);//центрувати іконку в клієнтському прямокутникуint cxIcon = GetSystemMetrics(SM_CXICON);int cyIcon = GetSystemMetrics(SM_CYICON);CRect rect;//об’єкт, який описує прямокутникGetClientRect(&rect);//відшукує координати клієнтської площі вікнаint x = (rect.Width() - cxIcon + 1) / 2;int y = (rect.Height() - cyIcon + 1) / 2;dc.DrawIcon(x, y, m_hIcon);//рисувати іконку в координатах x, y}else//інакше викликати функцію базового класу{CDialog::OnPaint();}}//викликається щоб отримати курсор при перетягуванні мінімізованого вікнаHCURSOR CMy_MFCDlg::OnQueryDragIcon(){return static_cast<HCURSOR>(m_hIcon);}//викликається при натиску на кнопку IDOKvoid CMy_MFCDlg::OnBnClickedOk(){edit1.SetWindowTextW(L"Hello");}//помістити в edit1 текст "Hello"

13 Створення додатків Win32 за допомогою Visual C++.NET

Постановка задачі: за допомогою Microsoft Visual C++.NET створити додаток Win32 з графічним інтерфейсом. В головному вікні програми розмістити елемент керування – поле, запрограмувати функцію-обробник події натиску на кнопку, яка виводить в поле слова "Hello World!".

Код програми //файл з описом форми Form1#pragma once//файл буде підключений тільки раз при компіляціїnamespace My_first {//простір імен My_first//використовувати простори іменusing namespace System;//базових класівusing namespace System::ComponentModel;//для компонентної моделіusing namespace System::Collections;//для різних зборок, наприклад, масивівusing namespace System::Windows::Forms;//для створення Windows додатківusing namespace System::Data;//для роботи з базами данихusing namespace System::Drawing;//для роботи з GDI+//клас форми Form1, успадкований від Formpublic ref class Form1: public System::Windows::Forms::Form{public:Form1(void)//конструктор{InitializeComponent();}//виклик методу ініціалізаціїprotected:~Form1()//деструктор{if (components){delete components; }//вивільнити компоненти }private: System::Windows::Forms::Button^ button1;//компонент button1private: System::Windows::Forms::TextBox^ textBox1;//компонент textBox1//^ замінює * в новому синтаксисі для вказівників на об’єкти в керованій купіprotected: private:System::ComponentModel::Container ^components;//містить компоненти//опис методів форми#pragma region Windows Form Designer generated codevoid InitializeComponent(void)//метод ініціалізації форми{//створити об’єкти button1 і textBox1this->button1 = (gcnew System::Windows::Forms::Button());this->textBox1 = (gcnew System::Windows::Forms::TextBox());this->SuspendLayout();//тимчасово зупиняє логіку розміщення елементу керування //властивості об’єкту button1this->button1->Location = System::Drawing::Point(96, 140);//координатиthis->button1->Name = L"button1";//ім’яthis->button1->Size = System::Drawing::Size(88, 47);//розмірthis->button1->TabIndex = 0;//перший отримує фокус при натиску Tab this->button1->Text = L"button1";//надписthis->button1->UseVisualStyleBackColor = true;//фон рисується використовуючи стилі//пов’язує подію з функцією обробки подіїthis->button1->Click += gcnew System::EventHandler(this, &Form1::button1_Click); //властивості об’єкту textBox1 this->textBox1->Location = System::Drawing::Point(96, 68);//координатиthis->textBox1->Name = L"textBox1";//ім’яthis->textBox1->Size = System::Drawing::Size(100, 22);//розмірthis->textBox1->TabIndex = 1;//другий отримує фокус при натиску Tab //властивості об’єкту Form1//установлює розміри і режим автоматичної зміни розміру this->AutoScaleDimensions = System::Drawing::SizeF(8, 16);this->AutoScaleMode = System::Windows::Forms::AutoScaleMode::Font;this->ClientSize = System::Drawing::Size(292, 263);//розмір клієнтської областіthis->Controls->Add(this->textBox1);//добавити елемент керування textBox1this->Controls->Add(this->button1);//добавити елемент керування button1this->Name = L"Form1";//ім’яthis->Text = L"Form1";//надписthis->ResumeLayout(false);//відновлює логіку розміщення елементу керуванняthis->PerformLayout();//виконує логіку розміщення елементу керування}#pragma endregion//функція обробки події private: System::Void button1_Click(System::Object^ sender, System::EventArgs^ e) {textBox1->Text="Hello World!";//вивести в поле textBox1 текст}};} // My_first.cpp: головний файл проекту#include "stdafx.h"#include "Form1.h"//директива підключення файлу Form1.husing namespace My_first;//використовувати простір імен My_first[STAThreadAttribute]//атрибут потоковості STAint main(array<System::String ^> ^args)//головна функція{//дозволяє Windows XP візуальні ефектиApplication::EnableVisualStyles();Application::SetCompatibleTextRenderingDefault(false); //створити головне вікно Form1 і виконатиApplication::Run(gcnew Form1());return 0;}

Задачі

Задачі 1 Основи програмування мовою С++

 

Дано функцію f(x), аргумент x змінюється від xmin до xmax з кроком Dx (14.1). Розв'язати наступні задачі. Для вводу-виводу даних використати команди потокового вводу-виводу.

(14.1)

 

Задача 1.1 Лінійні програми. Знайти f(x) при заданому x, якщо значення х задовольняє тільки першій умові.

Задача 1.2 Розгалуження. Знайти f(x) при заданому x.

Задача 1.3 Цикли з лічильником. Протабулювати або побудувати графік функції на проміжку з заданим кроком.

Задача 1.4 Цикли. Знайти суму або добуток . Використати:

а) оператор циклу з лічильником,

б) оператор циклу з передумовою,

в) оператор циклу з післяумовою.

Задача 1.5 Цикли і розгалуження. Знайти мінімальне f(x)min і максимальне значення f(x)max, на проміжку.

Задача 1.6 Цикли і розгалуження. Знайти значення функції, які більше 0 і менші 10 на проміжку.

Задача 1.7 Ітераційні цикли. Знайти корінь рівняння f(x)=0 (знайти при якому значенні x f(x)=0).

Задача 1.8 Підпрограми. Знайти f(x) при заданому x. Визначення значення функції виконати у вигляд підпрограми-функції.

Задача 1.9 Підпрограми. Знайти інтеграл . Визначення значення функції виконати у вигляд підпрограми-функції.

 

Задача 1.10 Одновимірні масиви. Дано масив значень аргументу . Побудувати відповідний масив значень функції f(x). Знайти в ньому кількість елементів, які менші 0 і замінити їх на 1. Використати:

а) статичні масиви,

б) динамічні масиви.

Задача 1.11 Двовимірні масиви. Дано масив значень аргументу:

.

Впорядкувати рядки масиву X по зростанню. Побудувати відповідний масив значень функції f(x). Використати:

а) статичні масиви,

б) динамічні масиви.

Задача 1.12 Текстові файли послідовного доступу. Записати у текстовий файл значення функції і аргументу на проміжку з заданим кроком. Виконати пошук в створеному файлі певних даних.

Задача 1.13 Структури. Створити структуру, яка містить такі члени: аргумент, функція, похідна функції . Створити масив екземплярів структури.

Задача 1.14 Бінарні файли довільного доступу. Записати у бінарний файл екземпляри структури (задача 1.13), якщо аргумент змінюється від мінімального до максимального з заданим кроком. Виконати пошук в створеному файлі певних даних.

Задача 1.15 Рядки. Створити довільний рядок (масив символів). За допомогою операторів циклу і умови замінити задані символи (або слова) в рядку на інші.

Задача 1.16 Функції для роботи з рядками. Створити довільні рядки. Обробити рядки за допомогою функцій: strlen, strcat, strcpy, srtchr, strstr, atoi, itoa, gcvt, strtod.

 

 

Задачі 2 Об’єктно-орієнтоване програмування мовою С++

 

Задача 2.1 Класи. Створити клас, який описує задане поняття (таблиця 14.1). Передбачити задані члени класу, у тому числі конструктор та конструктор копії. Статично та динамічно створити екземпляри класу.

Задача 2.2 Успадкування. На основі базового класу (задача 2.1) створити похідний клас, який описує задане поняття (таблиця 14.1). Передбачити задані члени класу, у тому числі конструктор та конструктор копії. Обґрунтувати специфікатори доступу членів класів. Статично та динамічно створити екземпляри базового та похідного класів.

Задача 2.3 Вкладені класи. Композиція. Створити клас, який описує задане поняття (таблиця 14.1). Передбачити задані члени класу, в тому числі поле (поля), класового типу. Статично та динамічно створити екземпляри класу.

Задача 2.4 Поліморфізм. На основі базового класу (задача 2.1) створити похідний клас, який описує задане поняття (таблиця 14.1). Передбачити задані члени класу, у тому числі віртуальні функції. Статично та динамічно створити екземпляри класу.

Задача 2.5 Шаблони класів. Створити шаблони класів, які розроблені в попередніх задачах. Створити екземпляри класів.

Таблиця 14.1 – Варіанти для задач 2

№ вар. Назва класу (поняття) Базовий клас (поняття) Члени класу (атрибути об’єктів і операції над ними)
Поля (атрибути) Методи (операції)
  студент - прізвище, ім’я, група, курс конструктор, друк повної інформації
студент стаціона-рної форми навчання студент ціна року навчання конструктор, оплачено суму, друк повної інформації
група - назва, масив студентів конструктор, друк списку студентів
  офісна техніка - тип, назва, ціна конструктор, ціна, друк повної інформації
Продовження табл. 14.1
компле-ктуючі ПК

офісна техніка характери-стики конструктор, друк повної інформації
персона-льний комп’ютер офісна техніка компле-ктуючі ПК конструктор, сумарна ціна комплектуючих, друк повної інформації
  арифмети-чна операція - операнди a,b конструктор, результат
додавання арифме-тична операція   конструктор, результат
множення арифме-тична операція   конструктор, результат
  гральна карта однієї масті - ранг конструктор, сума очок
гральна карта гральна карта однієї масті масть, колір   конструктор, сума очок
гравець в покер - масив гральних карт конструктор, сума очок
  шахова фігура - колір, тип, цінність, позиція на дошці конструктор, масив клітинок можливих ходів
кінь шахова фігура - конструктор, масив клітинок можливих ходів
пішак шахова фігура - конструктор, масив клітинок можливих ходів, перетворення в іншу фігуру
Продовження табл. 14.1
гравець

- колір, масив фігур конструктор, друк інформації
  література - назва, видавни-цтво, рік видання конструктор, друк повної інформації
книга літера-тура автор конструктор, друк повної інформації
журнал літера-тура номер друк повної інформації
читач - ім’я, номер читацького квитка, масив літератури конструктор, список літератури
  колір RGB - компоненти кольорів: червоного (R), зеленого (G), синього (B) конструктор, установка кольору: R=0..255, G=0..255, B=0..255 назва: R=255, G=255, B=0 - жовтий, R=255, G=153, B=204–рожевий, R=0, G=255, B=0 - зелений
колір Grayscale (сірий) колір RGB   конструктор, установка кольору: R=G=B=0..255
рисунок - координати точки (x,y), колір конструктор, записати у файл, прочитати з файлу
  точка - координати x, y, колір конструктор  
коло точка радіус r конструктор, довжина: , площа:
Продовження табл. 14.1
лінія

точка координати другої точки x2, y2 конструктор, довжина: , ,
лінія (інший варіант) - точка 1, точка 2 конструктор, довжина: , ,
прямоку-тник лінія - конструктор, периметр: , площа:
трикутник лінія координати третьої точки x3, y3 конструктор, периметр: , площа:
набір геометри-чних фігур - масиви точок, кіл, ліній, прямоку-тників, трикутників конструктор, сумарна довжина ліній, сумарна площа
  матриця - розмір m×n, елементи конструктор, додавання матриць m×n: , множення на скаляр: , множення матриці m×n на матрицю n×r це матриця m×r: , транспонування матриці m×n це
Продовження табл. 14.1
матриця n×m:

квадратна матриця 3×3 матриця - конструктор, визначник: D=a11·a22·a33-a11·a23·a32-a12·a21·a33+ a12·a31·a23+a21·a13·a32-a13·a22·a31
вектор матриця {a1,a2,a3} конструктор, довжина: , додавання: , скалярне множення: , векторне множення:
  функція - змінна x, dx конструктор, значення f(x) в точці, значення похідної в точці, значення інтегралу
функція двох змінних функція змінна x2, dx2 конструктор, значення f(x,x2) в точці, диференціали ,
Закінчення табл. 14.1
часткові похідні

графік функцій (таблиця значень) - , масив функцій конструктор, друк або запис у файл

 



Поделиться:


Последнее изменение этой страницы: 2017-01-24; просмотров: 179; Нарушение авторского права страницы; Мы поможем в написании вашей работы!

infopedia.su Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Обратная связь - 3.17.162.247 (0.04 с.)