Разработка программы для Windows на Visual C++

Использование AppWizard для создания программ. Изучение документов Visual C++, видов Visual C++ и структуры программы в Visual C++. Объекты приложения, главного окна, документа и вида программы. Метод кода для вывода сообщения. Редактирование метода.

Рубрика Программирование, компьютеры и кибернетика
Вид лабораторная работа
Язык русский
Дата добавления 09.11.2014
Размер файла 469,3 K

Отправить свою хорошую работу в базу знаний просто. Используйте форму, расположенную ниже

Студенты, аспиранты, молодые ученые, использующие базу знаний в своей учебе и работе, будут вам очень благодарны.

Размещено на http://www.allbest.ru/

ЛАБОРАТОРНАЯ РОБОТА №1

Тема: Разработка программы для Windows на Visual C++

Цель:

1. Научиться использовать AppWizard для создания программ.

2. Изучить документы Visual C++, виды Visual C++ и структуру программы в Visual C++

При создании программ на Visual C++ обычно применяются мастера (wizards), например Visual C++ AppWizard. После того как мастер сгенерирует код, можно отредактировать программу и настроить ее в соответствии со своими требованиями. Для этого нужно понимать, как работают различные компоненты программы на Visual C.

Программа для Windows на VisualC++

Первая программа на Visual C++ будет очень простой: так легче изучить новую тему. Все что она будет делать -- это создавать окно и выводить в нем текст «Добро пожаловать в Visual C++».

На самом деле возможности нашей первой программы вовсе не ограничиваются простым выводом сообщения. Visual C++ встроит в нее меню и панель инструментов, хотя они и не будут ничего делать.

1. Запустите Visual C++ и выполните команду File > New; открывается окно диалога New (рис. 1.1).

2. Выберите из списка строку MFC AppWizard(exe).

3. Введите в текстовом поле Project Name имя проекта welcome.

4. Нажмите кнопку ОК, чтобы запустить мастер Visual C++ AppWizard (рис. 1.2).

5. AppWizard напишет за нас основную часть программного кода.

6. На экране (см. рис. 1.2) появляется окно первого (Step 1) из шести этапов работы с AppWizard.

7. Оставьте без изменений все стандартные параметры AppWizard, кроме одного -- по умолчанию AppWizard создает программы с несколькими окнами, а нам нужна программа с одним окном. Это облегчит знакомство с темой и сделает ее более понятной.

8. Установите переключатель Single Document (см. рис. 1.2) и нажмите кнопку Next. Мы переходим ко второму этапу (Step 2) работы с AppWizard (рис. 1.3).

9. На рис. 1.3 AppWizard спрашивает, следует ли включить в программу какую-либо поддержку баз данных; оставьте установленным переключатель None.

Рис. 1.2 MFCAppWizard упрощает создание программ на Visual C++

Рис. 1.3 Второй этап работы с MFCAppWizard

10. Нажимайте кнопку Next до тех пор, пока не доберетесь до шестого этапа (Step 6) AppWizard, изображенного на рис. 1.4.

11. На шестом этапе AppWizard сообщает, какие классы он собирается создать в новой программе: CWelcomeApp, CMainFrame, CWelcomeDoc и CWelcomeView. В этом уроке мы рассмотрим все эти классы.

12. Нажмите кнопку Finish -- откроется окно New Project Information (рис. 1.5).

Рис. 1.5 Окно New Project Information MFC AppWizard

13. Нажмите кнопку ОК, чтобы завершить создание проекта. В указанном вами каталоге будут созданы следующие файлы:

welcome.clw

Файл ClassWizard

welcome.dsw

Основной файл рабочей области

welcome.h

Заголовочный файл приложения

welcome.cpp

Исходный текст приложения

StdAfx.h

Заголовочный файл для стандартного «каркаса» приложения

StdAfx.cpp

Исходный текст стандартного «каркаса» приложения

MainFrm.h

Заголовочный файл главного окна

MainFrm.cpp

Исходный текст главного окна

welcomeDoc.h

Заголовочный файл документа

welcomeDoc.cpp

Исходный текст документа

welcomeView.h

Заголовочный файл вида

welcomeView.cpp

Исходный текст вида

Resource.h

Файл с ресурсными константами

welcome.гс

Файл с ресурсами

welcome, neb

Файл с информацией о представлении и взаимных связях

welcome.dsp

Файл проекта

res

Каталог для ресурсов

13. Программа готова!

AppWizard также создает файл с именем ReadMe.txt, в котором более подробно разъясняется назначение некоторых файлов, созданных AppWizard:

MICROSOFT FOUNDATION CLASS LIBRARY : welcome

AppWizard создал приложение welcome за вас. Оно не только демонстрирует основные принципы использования классов Microsoft Foundation, но и является отправной точкой, для написания вашего собственного приложения.

В этом файле содержится краткое описание всех файлов, составляющих приложение welcome.

welcome.dsp

Файл проекта содержит общие сведения о проекте и используется при построении отдельного проекта или подпроекта. Другие пользователи могут пользоваться файлом проекта (.dsp), однако они должны выполнить локальное экспортирование make-файлов.

welcome.h

Главный заголовочный файл приложения. Он включает другие заголовочные файлы проекта (в том числе Resource.h) и объявляет класс приложения CWelcomeApp.

welcome.cpp

Главный файл с исходным текстом приложения, содержащий класс приложения CWelcomeApp.

welcome.rc

Перечисление всех ресурсов Microsoft Windows, используемых в программе. В их число входят значки, растровые изображения и курсоры, все они хранятся в подкаталоге RES. Данный файл можно редактировать непосредственно в Microsoft Visual C++.

res\welcome.ico

Файл с изображением, используемым в качестве значка приложения. Включается в главный ресурсный файл welcome.гс.

res\welcome.rс2

Файл содержит ресурсы, не редактируемые в Microsoft Visual C++. В него следует помещать все ресурсы, для которых отсутствуют специализированные редакторы.

welcome.clw

Файл содержит информацию, которая используется ClassWizard для модификации существующих или добавления новых классов. ClassWizard также пользуется им для хранения информации, необходимой для создания и модификации схем сообщений и схем данных в окнах диалогов, а также для создания прототипов функций.

Главное окно:

MainFrm.h, MainFrm.cpp

Файлы содержат класс главного окна приложения CMainFrame, производный от CFrameWnd и отвечающий за все аспекты работы с окнами в интерфейсе SDI.

res\Toolbar.bmp

Растровый файл содержит изображения значков на панели инструментов. Исходная панель инструментов и строка состояния конструируются в классе CMainFrame. Чтобы добавить новые кнопки на панель инструментов, измените растровое изображение панели инструментов в редакторе ресурсов и обновите массив IDR_MAINFRAME TOOLBAR в файле welcome.rc.

AppWizard создает один тип документа и один вид:

welcomeDoc.h, welcomeDoc.cpp - документ

Файлы содержат класс CWelcomeDoc. Отредактируйте их, чтобы внести в документ специфические данные и реализовать сохранение/загрузку файлов (через CWelcomeDoc::Serialize).

welcomeView.h, welcomeView.cpp - вид документа

Файлы содержат класс CWelcomeView. Объекты CWelcomeView используются для просмотра объектов CWelcomeDoc.

Другие стандартные файлы:

StdAfx.h, StdAfx.cpp

Файлы используются для построения предварительно компилированных файлов - заголовочного (РСН) файла welcome.pen, а также файла типов StdAfx.obj.

Resource.h

Стандартный заголовочный файл, в котором определяются идентификаторы новых ресурсов. Microsoft Visual C++ читает этот файл и обновляет его содержимое.

AppWizard помечает комментарием "TODO:" те части исходного текста, которые следует дополнить или изменить.

Если приложение использует MFC в виде совместной DLL-библиотеки и его язык отличается от текущего языка операционной системы, вам придется скопировать соответствующую библиотеку с локализованными ресурсами MFC42XXX.DLL с Visual C++ CD-ROM в каталог system или system32 и переименовать ее в MFCLOC.DLL. (Сокращение "XXX" определяет используемый язык. Например, MFC42DEU.DLL содержит ресурсы, переведенные на немецкий.) Если не сделать этого, некоторые элементы пользовательского интерфейса в ваших приложениях сохранят язык операционной системы.

Части программы на Visual C++

Программа, созданная Visual C++ AppWizard, состоит из четырех основных частей: объекта приложения, объекта главного окна, объекта документа и объекта вида. Все они часто будут встречаться нам в книге.

Объект приложения

Объект приложения, находящийся в файлах welcome.h и welcome.cpp (файл.h содержит определения констант, а также объявления переменных и методов класса), -- то, что Windows запускает при старте программы. Когда этот объект начинает работу, он размещает на экране главное окно.

Объект главного окна

Объект главного окна отображает на экране саму программу; в нем находится меню, заголовок окна и панель инструментов. Объект главного окна отвечает за все, что происходит вокруг того места, где собственно работает наша программа (где она рисует, выводит текст и т. д.). Рабочая зона программы называется клиентской областью окна; например, текст выводится в клиентской области текстового редактора. За работу с клиентской областью отвечает объект вида.

Объект вида

Объект вида предназначен для работы с клиентской областью -- местом, где обычно отображаются в соответствующем формате данные нашей программы (текст, если вы работаете с текстовым редактором). На самом деле объект вида представляет собой окно, которое накладывается поверх клиентской области. Объект вида отображает данные, хранящиеся в объекте документа.

Объект документа

В объекте документа хранятся данные программы. Возможно, у вас возникнет вопрос -- а почему бы не хранить эти данные в объекте вида? Дело в том, что таких данных бывает много, причем не все они отображаются в клиентской области. Visual C++ облегчает нашу задачу и позволяет сохранить все данные в объекте документа, а затем поручить объекту вида отобразить лишь те данные, которые попадают в клиентскую область объекта вида. Как мы вскоре увидим, для одного документа можно иметь несколько одновременно открытых видов. Взаимосвязь четырех частей программы на Visual C++ выглядит так:

Вывод приветствия

Мы рассмотрели программу, написанную мастером AppWizard. Давайте изменим ее так, чтобы она выводила сообщение «Добро пожаловать в Visual C++!» Для этого мы добавим небольшой фрагмент кода в метод OnDraw() класса CWelcomeVlew (этот класс служит для отображения данных). Программа вызывает метод OnDraw(), когда ей требуется вывести что-либо в клиентской области программы (например, при запуске программы, при свертывании и восстановлении окна или при перемещении другого окна, закрывающего часть клиентской области). В данный момент метод OnDraw() выглядит так (см. файл welcomeView.cpp):

void CWelcomeView::OnDraw(CDC* pDC)

{

CWelcomeDoc* pDoc = GetDocument();

ASSERT_VALID(pDoc);

// TODO: добавьте код для отображения данных

}

Добавим в этот метод код для вывода сообщения.

1. Чтобы приступить к редактированию метода, перейдите в окне просмотра VisualC++ на вкладку ClassView.

2. Найдите в иерархическом списке название класса CWelcomeView (рис. ).

3. Щелкните на знаке “плюс” рядом с элементом. На экране выводится список методов данного класса.

4. Найдите в списке метод OnDraw() и дважды щелкните на нем -- метод откроется в текстовом редакторе.

5. Чтобы изменить поведение нашей программы, добавьте в OnDraw() всего две строки:

void CWelcomeView::OnDraw(CDC* pDC)

{

CString welcome_string = "Добро пожаловать в Visual C++";

CWelcomeDoc* pDoc = GetDocument();

ASSERT_VALID(pDoc);

pDC->TextOut(0, 0, welcome_string);

// TODO: добавьте код для отображения данных

}

6. Программа готова. Запустите ее: для этого выполните команду Build > Build welcome.exe, а затем -- команду Build >* Execute welcome.exe. Результат ее работы показан на рис. 2.7.

7. Как видите,программа.успешно) выводит в окне сообщение.

Разберем как она работает.

Исследуем объект приложения

При запуске приложения Windows вызывает функцию WinMain() объекта приложения, поэтому наше знакомство с программой начнется именно с объекта приложения. Объект приложения должен выполнять три задачи:

Рис. 1.7 Программа под Windows

- запустить программу,

- создать главное окно и

- организовать передачу сообщений Windows в главное окно и из него.

Что такое «сообщения Windows»? Это особые сигналы с минимальным объемом служебных данных, посредством которых различные объекты в среде Windows общаются между собой. Например, когда пользователь завершает работу программы, Windows посылает объекту приложения сообщение WM_QU IT. Если же пользователь изменяет размеры окна программы, она получает сообщение WM_SIZE. Наиболее интересные сообщения Windows перечислены в табл. 1.1.

программа visual приложение окно

Таблица 1.1

Некоторые сообщения Windows

Сообщение Windows

Значение

WM_ACTIVATE

Окно становится активным или неактивным

WM_ACTIVATEAPP

Активизируемое окно принадлежит другому приложению

WM_CANCELMODE

Отмена системного режима

WM_CHILDACTIVATE

Активизируется дочернее окно

WM_CLOSE

Окно было закрыто

WM_CREATE

Была вызвана функция создания окна

WM_DESTROY

Была вызвана функция уничтожения окна

WM_ENABLE

Окно было заблокировано или разблокировано

WM_ENDSESSION

Сеанс работы завершается

WM_ENTERIDLE

Начало пассивного цикла, которым можно воспользоваться для нужд программы

WM_ERASEBKGND

Необходимо стереть фон окна

MM_GETMINMAXINFO

Получение информации о размерах окна

WM_GETTEXT

Получение текста, связанного с окном

WM_GETTEXTLENGTH

Получение длины текста, связанного с окном

WM_JCONERASEBKGND

Необходимо стереть фон окна

WM_KILLFOCUS

Окно теряет фокус ввода

WM_MENUCHAR

Пользователь нажал клавишу, не используемую в текущем меню

WM_MENUSELECT

Выбрана команда меню

WM_MOVE

Окно переместилось

WM_PAINT

Перерисовать часть окна

WM_PAINTICON

Перерисовать часть значка приложения

WM_PARENTNOTIFY

Окно создается или уничтожается

WM_QUERYENDSESSION

Получена команда на завершение сеанса

WM_QUIT

Завершение работы приложения

WM_SETFOCUS

Окно получило фокус ввода

WM_SETFONT

Изменился шрифт

WM_SETREDRAW

Снимает флаг перерисовки

WM_SETTEXT

Задает текст в заголовке окна

WM_SHOWWINDOW

Окно необходимо скрыть или вывести на экран

WM_SIZE

Изменился размер окна

Объект приложения отсылает большинство полученных сообщений объекту главного окна (не считая WM_QUIT, которое завершает работу объекта приложения).

Объекты в программе на Visual C++ интенсивно общаются друг с другом. Это вполне понятно, поскольку программа делится на четыре главных объекта и каждому из них иногда приходится обращаться к услугам других объектов. На приведенной ниже схеме показано, как организовано взаимодействие четырех главных объектов в программе на Visual C++.

Код объекта приложения содержится в файле welcome.cpp. Наибольший интерес для нас представляет метод Initlnstance(), поскольку именно в нем программа собирает остальные классы (главного окна, документа и вида) и объединяет их в шаблон документа, в соответствии с которым объект приложения организует работу программы:

BOOL CWelcomeApp::InitInstance()

{

AfxEnableControlContainer();

// Стандартная инициализация

// Если вы не пользуетесь какими-либо функциями и желаете

// сократить размер выполняемого файла, удалите

// ненужные процедуры инициализации.

#ifdef _AFXDLL

Enable3dControls(); // Вызывается при использовании

// MFC в виде совместной DLL

#else

Enable3dControlsStatic(); // Вызывается при статической

// компоновке MFC

#endif

// Изменить ключ реестра, под которым будут сохраняться

// параметры. Замените строку более подходящей - например,

// названием вашей компании или организации.

SetRegistryKey(_T("Local AppWizard-Generated Applications"));

LoadStdProfileSettings(); // Загрузить стандартные параметры

// из INI-файла (включая MRU)

// Зарегистрировать шаблоны документов приложения.

// Шаблоны документов объединяют документы, обрамленные окна и виды.

CSingleDocTemplate* pDocTemplate;

pDocTemplate = new CSingleDocTemplate(

IDR_MAINFRAME,

RUNTIME_CLASS(CWelcomeDoc),

RUNTIME_CLASS(CMainFrame), // Главноеобрамленноеокно SDI

RUNTIME_CLASS(CWelcomeView));

AddDocTemplate(pDocTemplate);

// Просмотреть командную строку в поисках стандартных команд оболочки,

// DDE и открытия файлов

CCommandLineInfo cmdInfo;

ParseCommandLine(cmdInfo);

// Организовать обработку команд, содержащихся в командной строке

if (!ProcessShellCommand(cmdInfo))

return FALSE;

// Было инициализировано всего одно окно; отобразить и обновить его.

m_pMainWnd->ShowWindow(SW_SHOW);

m_pMainWnd->UpdateWindow();

return TRUE;

}

Обратите также внимание на строку m_pMainWnd->ShowWindow(SW_SHOW); в конце метода Initlnstance(). Именно в ней наш объект приложения отображает главное окно программы, вызывая метод ShowWindow() объекта главного окна. Переменная m_pMainWnd содержит указатель на объект главного окна, а оператор -> действует точно так же, как и оператор. («точка»), только он работает с указателем на объект. Другими словами, этот оператор обращается к переменным и методам того объекта, на который ссылается данный указатель.

Имена переменных классов в Visual C++ имеют стандартный префикс m_. На самом деле в Visual C++ аналогичные префиксы используются для всех имен переменных (так называемая «венгерская запись»). Префикс обозначает тип переменной; например, префикс с используется для символьных типов, поэтому с первого взгляда становится ясно, что cinput -- символьная переменная. Наиболее распространенные префиксы венгерской записи перечислены в табл. 1.2.

Таблица 1.2

Префиксы венгерской записи

Префикс

Значение

а

Массив

b

Логический тип (int)

by

Беззнаковый символьный тип (byte)

с

Символьный тип

cb

Счетчик байтов

cr

Цвет

сх, су

Короткий тип (short)

dw

Беззнаковый длинный тип (dword)

fn

Функция

h

Логический номер (handle)

i

Целое

m_

Переменная класса

n

Short или int

np

Ближний указатель

p

Указатель

l

Длинный тип (long)

lp

Длинный указатель

s

Строка

sz

Строка, заканчивающаяся нуль-символом

tm

Текстовая метрика

w

Беззнаковое целое (word)

x, y

Короткий тип (координата х или у)

Исходный текст объекта приложения находится в файлах welcome.h/welcome.cpp

// welcome.h : главный заголовочный файл для приложения WELCOME

//

#if !defined(AFX_WELCOME_H__AF072C83_900A_11D0_8860_444553540000__INCLUDED_)

#define AFX_WELCOME_H__AF072C83_900A_11D0_8860_444553540000__INCLUDED_

#if _MSC_VER >= 1000

#pragma once

#endif // _MSC_VER >= 1000

#ifndef __AFXWIN_H__

#error include 'stdafx.h' before including this file for PCH

#endif

#include "resource.h" // основные символические константы

/////////////////////////////////////////////////////////

// CWelcomeApp:

// Реализация этого класса содержится в файле welcome.cpp

//

class CWelcomeApp : public CWinApp

{

public:

CWelcomeApp();

// Переопределения

// Переопределения виртуальных функций, сгенерированные ClassWizard

//{{AFX_VIRTUAL(CWelcomeApp)

public:

virtual BOOL InitInstance();

//}}AFX_VIRTUAL

// Реализация

//{{AFX_MSG(CWelcomeApp)

afx_msg void OnAppAbout();

// ВНИМАНИЕ - здесь ClassWizard вставляет и удаляет функции класса.

// НЕ ИЗМЕНЯЙТЕ содержимое этих частей сгенерированного кода!

//}}AFX_MSG

DECLARE_MESSAGE_MAP()

};

////////////////////////////////////////////////////////////

//{{AFX_INSERT_LOCATION}}

// Microsoft Visual C++ вставляет дополнительные объявления

// перед предшествующей строкой.

#endif

// !defined(AFX_WELCOME_H__AF072C83_900A_11D0_8860_444553540000__INCLUDED_)

// welcome.cpp : определяет поведение классов данного приложения.

//

#include "stdafx.h"

#include "welcome.h"

#include "MainFrm.h"

#include "welcomeDoc.h"

#include "welcomeView.h"

#ifdef _DEBUG

#define new DEBUG_NEW

#undef THIS_FILE

static char THIS_FILE[] = __FILE__;

#endif

////////////////////////////////////

// CWelcomeApp

BEGIN_MESSAGE_MAP(CWelcomeApp, CWinApp)

//{{AFX_MSG_MAP(CWelcomeApp)

ON_COMMAND(ID_APP_ABOUT, OnAppAbout)

// ВНИМАНИЕ - здесь ClassWizard добавляет и удаляет макросы схемы.

// НЕ ИЗМЕНЯЙТЕ содержимое этих частей сгенерированного кода!

//}}AFX_MSG_MAP

// Стандартные файловые команды документа

ON_COMMAND(ID_FILE_NEW, CWinApp::OnFileNew)

ON_COMMAND(ID_FILE_OPEN, CWinApp::OnFileOpen)

// Стандартная команда настройки принтера

ON_COMMAND(ID_FILE_PRINT_SETUP, CWinApp::OnFilePrintSetup)

END_MESSAGE_MAP()

///////////////////////////////////

// Конструктор CWelcomeApp

CWelcomeApp::CWelcomeApp()

{

// TODO: добавьте код конструктора,

// Инициализация наиболее важных переменных и функций

// должна выполняться в InitInstance

}

////////////////////////////////////////////////////////////

// Единственный объект класса CWelcomeApp

CWelcomeApp theApp;

////////////////////////////////////////////////////////

// Инициализация CWelcomeApp

BOOL CWelcomeApp::InitInstance()

{

AfxEnableControlContainer();

// Стандартная инициализация

// Если вы не пользуетесь какими-либо функциями и желаете

// сократить размер выполняемого файла, удалите

// ненужные процедуры инициализации.

#ifdef _AFXDLL

Enable3dControls(); // Вызывается при использовании

// MFC в виде совместной DLL

#else

Enable3dControlsStatic(); // Вызывается при статической

// компоновке MFC

#endif

// Изменить ключ реестра, под которым будут сохраняться

// параметры. Замените строку более подходящей - например,

// названием вашей компании или организации.

SetRegistryKey(_T("Local AppWizard-Generated Applications"));

LoadStdProfileSettings(); // Загрузить стандартные параметры

// из INI-файла (включая MRU)

// Зарегистрировать шаблоны документов приложения.

// Шаблоны документов объединяют документы, окна и виды.

CSingleDocTemplate* pDocTemplate;

pDocTemplate = new CSingleDocTemplate(

IDR_MAINFRAME,

RUNTIME_CLASS(CWelcomeDoc),

RUNTIME_CLASS(CMainFrame), // Главное окно SDI

RUNTIME_CLASS(CWelcomeView));

AddDocTemplate(pDocTemplate);

// Просмотреть командную строку в поисках стандартных команд оболочки,

// DDE и открытия файлов

CCommandLineInfo cmdInfo;

ParseCommandLine(cmdInfo);

// Организовать обработку команд, содержащихся в командной строке

if (!ProcessShellCommand(cmdInfo))

return FALSE;

// Было инициализировано всего одно окно; отобразить и обновить его.

m_pMainWnd->ShowWindow(SW_SHOW);

m_pMainWnd->UpdateWindow();

return TRUE;

}

////////////////////////////////////////////////////////

// Окно диалога CAboutDlg, отображаемое командой About

class CAboutDlg : public CDialog

{

public:

CAboutDlg();

// Диалоговые данные

//{{AFX_DATA(CAboutDlg)

enum { IDD = IDD_ABOUTBOX };

//}}AFX_DATA

// Переопределения виртуальных функций, сгенерированные ClassWizard

//{{AFX_VIRTUAL(CAboutDlg)

protected:

virtual void DoDataExchange(CDataExchange* pDX); // Поддержка DDX/DDV

//}}AFX_VIRTUAL

// Реализация

protected:

//{{AFX_MSG(CAboutDlg)

// Обработчики сообщений отсутствуют

//}}AFX_MSG

DECLARE_MESSAGE_MAP()

};

CAboutDlg::CAboutDlg() : CDialog(CAboutDlg::IDD)

{

//{{AFX_DATA_INIT(CAboutDlg)

//}}AFX_DATA_INIT

}

void CAboutDlg::DoDataExchange(CDataExchange* pDX)

{

CDialog::DoDataExchange(pDX);

//{{AFX_DATA_MAP(CAboutDlg)

//}}AFX_DATA_MAP

}

BEGIN_MESSAGE_MAP(CAboutDlg, CDialog)

//{{AFX_MSG_MAP(CAboutDlg)

// Обработчики сообщений отсутствуют

//}}AFX_MSG_MAP

END_MESSAGE_MAP()

// Команда приложения для вызова окна диалога

void CWelcomeApp::OnAppAbout()

{

CAboutDlg aboutDlg;

aboutDlg.DoModal();

}

///////////////////////////////////////////////////////////

// Команды CWelcomeApp

Исследуем объект главного окна

Объект главного окна отвечает за всю работу окна программы, за исключением клиентской области.

Это означает, что объект главного окна отвечает за заголовок, строку меню, панель инструментов и строку состояния в нижней части окна. Заголовок и строка меню создаются автоматически при создании окна, а панель инструментов и строка состояния добавляются в методе OnCreate(). В файле MainFrm.cpp это делается так:

int CMainFrame::OnCreate(LPCREATESTRUCT lpCreateStruct)

{

if (CFrameWnd::OnCreate(lpCreateStruct) == -1)

return -1;

if (!m_wndToolBar.CreateEx(this, TBSTYLE_FLAT, WS_CHILD |

WS_VISIBLE | CBRS_TOP | CBRS_GRIPPER |

CBRS_TOOLTIPS | CBRS_FLYBY |

CBRS|SIZE_DYNAMIC) ||

!m_wndToolBar.LoadToolBar(IDR_MAINFRAME))

{

TRACE0("Failed to create toolbar\n");

return -1; // неудачная попытка создания

}

if (!m_wndStatusBar.Create(this) ||

!m_wndStatusBar.SetIndicators(indicators,

sizeof(indicators)/sizeof(UINT)))

{

TRACE0("Failed to create status bar\n");

return -1; // неудачная попытка создания

}

// TODO: Удалите следующие три строки, если вам не нужна

// закрепляемая панель инструментов

m_wndToolBar.EnableDocking(CBRS_ALIGN_ANY);

EnableDocking(CBRS_ALIGN_ANY);

DockControlBar(&m_wndToolBar);

return 0;

}

Хотя меню и панель инструментов отображаются объектом главного окна, в нем почти нет кода для выполнения этой задачи. Основная часть текста программы сосредоточена в объекте вида -- окне, которое накрывает клиентскую область. Главное окно также отображает объект вида, поэтому после краткого знакомства с объектом главного окна мы рассмотрим сам объект вида. Исходный текст объекта главного окна находится в файлах MainFrm.h/MainFrm.cpp.

// MainFrm.h : интерфейс класса CMainFrame

//

/////////////////////////////////////////////////////////

#if !defined(AFX_MAINFRM_H__AF072C87_900A_11D0_8860_444553540000__INCLUDED_)

#define AFX_MAINFRM_H__AF072C87_900A_11D0_8860_444553540000__INCLUDED_

#if _MSC_VER >= 1000

#pragma once

#endif // _MSC_VER >= 1000

class CMainFrame : public CFrameWnd

{

protected: // создание только при сериализации

CMainFrame();

DECLARE_DYNCREATE(CMainFrame)

// Атрибуты

public:

// Операции

public:

// Переопределения

// Переопределения виртуальных функций, сгенерированные ClassWizard

//{{AFX_VIRTUAL(CMainFrame)

virtual BOOL PreCreateWindow(CREATESTRUCT& cs);

//}}AFX_VIRTUAL

// Реализация

public:

virtual ~CMainFrame();

#ifdef _DEBUG

virtual void AssertValid() const;

virtual void Dump(CDumpContext& dc) const;

#endif

protected: // Внутренние управляющие объекты

CStatusBar m_wndStatusBar;

CToolBar m_wndToolBar;

// Сгенерированные функции схемы сообщений

protected:

//{{AFX_MSG(CMainFrame)

afx_msg int OnCreate(LPCREATESTRUCT lpCreateStruct);

// ВНИМАНИЕ - здесь ClassWizard вставляет и удаляет функции класса.

// НЕ ИЗМЕНЯЙТЕ содержимое этих частей сгенерированного кода!

//}}AFX_MSG

DECLARE_MESSAGE_MAP()

};

////////////////////////////////////////////////////////////

//{{AFX_INSERT_LOCATION}}

// Microsoft Visual C++ вставляет дополнительные объявления

// перед предшествующей строкой.

#endif

// !defined(AFX_MAINFRM_H__8A1BC189_B34B_11D1_887F_D42B07C10710__INCLUDED_)

// MainFrm.cpp : реализация класса CMainFrame

//

#include "stdafx.h"

#include "welcome.h"

#include "MainFrm.h"

#ifdef _DEBUG

#define new DEBUG_NEW

#undef THIS_FILE

static char THIS_FILE[] = __FILE__;

#endif

////////////////////////////////////////////////////////////

// CMainFrame

IMPLEMENT_DYNCREATE(CMainFrame, CFrameWnd)

BEGIN_MESSAGE_MAP(CMainFrame, CFrameWnd)

//{{AFX_MSG_MAP(CMainFrame)

// ВНИМАНИЕ - здесь ClassWizard добавляет и удаляет макросы схемы.

// НЕ ИЗМЕНЯЙТЕ содержимое этих частей сгенерированного кода!

ON_WM_CREATE()

//}}AFX_MSG_MAP

END_MESSAGE_MAP()

static UINT indicators[] =

{

ID_SEPARATOR, // индикаторы строки состояния

ID_INDICATOR_CAPS,

ID_INDICATOR_NUM,

ID_INDICATOR_SCRL,

};

///////////////////////////////////////////////////////////

// Создание/уничтожение CMainFrame

CMainFrame::CMainFrame()

{

// TODO: добавьте код для инициализации переменных класса

}

CMainFrame::~CMainFrame()

{

}

int CMainFrame::OnCreate(LPCREATESTRUCT lpCreateStruct)

{

if (CFrameWnd::OnCreate(lpCreateStruct) == -1)

return -1;

if (!m_wndToolBar.CreateEx(this, TBSTYLE_FLAT, WS_CHILD |

WS_VISIBLE | CBRS_TOP | CBRS_GRIPPER |

CBRS_TOOLTIPS | CBRS_FLYBY |

CBRS|SIZE_DYNAMIC) ||

!m_wndToolBar.LoadToolBar(IDR_MAINFRAME))

{

TRACE0("Failed to create toolbar\n");

return -1; // неудачная попытка создания

}

if (!m_wndStatusBar.Create(this) ||

!m_wndStatusBar.SetIndicators(indicators,

sizeof(indicators)/sizeof(UINT)))

{

TRACE0("Failed to create status bar\n");

return -1; // неудачная попытка создания

}

// TODO: Удалите следующие три строки, если вам не нужна

// закрепляемая панель инструментов

m_wndToolBar.EnableDocking(CBRS_ALIGN_ANY);

EnableDocking(CBRS_ALIGN_ANY);

DockControlBar(&m_wndToolBar);

return 0;

}

BOOL CMainFrame::PreCreateWindow(CREATESTRUCT& cs)

{

// TODO: Измените класс окна или его стили, редактируя

// содержимое CREATESTRUCT cs

return CFrameWnd::PreCreateWindow(cs);

}

////////////////////////////////////////////////////////////

// Диагностика в CMainFrame

#ifdef _DEBUG

void CMainFrame::AssertValid() const

{

CFrameWnd::AssertValid();

}

void CMainFrame::Dump(CDumpContext& dc) const

{

CFrameWnd::Dump(dc);

}

#endif //_DEBUG

///////////////////////////////////////////////////////////

// Обработчики сообщений CMainFrame

Перейдем к объекту вида - он отвечает за отображение данных из документа в клиентской области окна программы. Большая часть наших действий связана именно с объектом вида.

Исследуем объект вида

В объекте вида выводится наше сообщение "Добро пожаловать в Visual C++!". Это происходит в методе OnDraw() файла welcomeView.cpp:

void CWelcomeView::OnDraw(CDC* pDC)

{

CString welcome_string = "Добро пожаловать в Visual C++";

CWelcomeDoc* pDoc = GetDocument();

ASSERT_VALID(pDoc);

pDC->TextOut(0, 0, welcome_string);

}

Этот метод вызывается в ситуации, когда требуется перерисовать клиентскую область. На самом деле именно так станут работать все программы -- они будут разбиты на множество различных методов, предназначенных для обработки конкретных сообщений Windows.

Программирование, управляемое событиями

Программы для Windows управляются событиями (event-driven). Это означает, что они реагируют на действия пользователя, называемые событиями, -- щелчки кнопкой мыши, нажатия клавиш и т. д. При наступлении любого из этих событий в программе вызывается соответствующий метод. Тем самым удается разбить ее на небольшие методы, соответствующие различным сообщениям Windows. Например, метод OnDraw() вызывается при необходимости перерисовать клиентскую область -- когда окно впервые отображается на экране, когда пользователь перемещает окно, закрывавшее часть нашего окна, или же сворачивает и разворачивает текущее окно.

Вывод сообщения в объекте вида

Что же происходит в методе OnDraw() при выводе текста? Прежде всего мы создаем новый объект welcome_string, принадлежащий классу MFC CString, и заносим в него текст:

void CWelcomeView::OnDraw(CDC* pDC)

{

CString welcome_string = "Добропожаловатьв Visual C++";

CWelcomeDoc* pDoc = GetDocument();

ASSERT_VALID(pDoc);

pDC->TextOut(0, 0, welcome_string);

}

Класс CString содержит все операции со строками. Он чрезвычайно полезен и является заметным достижением по сравнению с принятой в языке С интерпретацией строк как символьных массивов.

Класс CString содержит следующие методы:

AllocSysString

AnsiToOem

Collate

Compare

CompareNoCase

CString

Empty

Find

FindOneOf

Format

FormatMessage

FreeExtra

GetAt

GetBuffer

GetBufferSetLength

GetLength

IsEmpty

Left

LoadString

LockBuffer

MakeLower

MakeReverse

MakeUpper

Mid

OemToAnsi

оператор [ ]

оператор +

оператор +=

оператор «

оператор =

оператор == < и т. д.

оператор »

оператор LPCTSTR

ReleaseBuffer

ReverseFind

Right

SetAt

SetSysString

SpanExcluding

Spanlncluding

TrimLeft

TrimRight

UnlockBuffer

Методы, специфические для Windows

Затем в методе OnDraw() мы выводим текстовую строку через переданный методу указатель pDC, который ссылается на объект класса MFC с именем CDC. Конкретно, мы вызываем метод Text0ut() этого объекта:

void CWelcomeView::OnDraw(CDC* pDC)

{

CString welcome_string = "Добро пожаловать в Visual C++";

CWelcomeDoc* pDoc = GetDocument();

ASSERT_VALID(pDoc);

pDC->TextOut(0, 0, welcome_string);

}

Класс CDC чрезвычайно важен для нас, поскольку он предназначен для работы с ком-текстами устройств. Весь графический и текстовый вывод, выполняемый нами в Visual C++, будет осуществляться через контексты устройств.'

Контекст устройства

« Контекст устройства »- область памяти, используемая в системе Windows для выполнения графических операций. Графический вывод может выполняться как на экран, так и на принтер. Объекты класса CDC содержат множество встроенных методов, используемых в процессе рисования в контексте устройства. Все рисование в Windows выполняется через контекст устройства.

На первый взгляд может показаться, что контексты устройств усложняют ситуацию, но вообще-то они упрощают ее. Дело в том, что они могут соответствовать самым разным устройствам, например, экрану монитора или принтеру. Если вы рисуете через контекст устройства, то изображение будет правильно отображаться на разных устройствах, в том числе на экране и на принтере.

Чтобы рисовать в нашем объекте вида, мы получаем контекст устройства, относящийся к нему. Кроме того, можно получить контекст устройства для всего окна, всего экрана или принтера. Для рисования в контексте устройства используются перечисленные ниже методы класса CDC; обратите внимание на их количество.

AbortDoc

AbortPath

AddMetaFileComment

AngleArc

Arc

ArcTo

Attach

BeginPath

BitBIt

CDC

Chord

CloseFigure

CreateCoinpatibleDC

CreateDC

CreateIC

DeleteDC

DeleteTempMap

Detach

DPtoHIMETRIC

DPtoLP

Draw3dRect

DrawDragRect

DrawEdge

DrawEscape

DrawFocusRect

DrawFrameControl

Drawlcon

DrawState

DrawText

Ellipse

EndDoc

EndPage

End path

EnuinObjects

Escape

ExcludeClipRect

ExcludeUpdateRgn

ExtFloodFill

ExtTextOut

FillPath

FillRect

FillRgn

FillSolidRect

FlattenPath

FloodFill

FrameRect

FrameRgn

FromHandle

QetArcDirection

GetAspectRatioFilter

GetBkColor

QetBkMode

GetBoundsRect

GetBrushOrg

GetCharABCWidths

GetCharWidth

GetClipBox

GetColorAdj,ustment

GetCurrentBltmap

QetCurrentBrush

GetCurrentFont

GetCurrentPalette

GetCurrentPen

GetCurrentPosition

GetDeviceCaps

QetFontData

GetGlyphOutline

GetHalftoneBrush

GetKerningPairs

GetMapMode

GetMiterLiinit

GetNearestColor

GetOutlineTextMet rics

GetOutputCharWidth

GetOutputTabbedTextExtent

GetOutputTextExtent

GetOutputTextMet rics

GetPath

Get Pixel

GetPolyFillMode

GetROP2

GetSafeHdc

GetStretchBltMode

GetTabbedTextExtent i

GetTextAlign

GetTextCharacterExtra

GetTextColor

GetTextЈxtent

GetTextFace

GetTextMetrics

GetViewportExt

GetViewportOrg

GetWindow

GetWindowExt

GetWindowOrg

GrayString

HIMETRICtoDP

HIMETRICtoLP

IntersecllipRect

InvertRect

InvertRgn

LineTo

LPtoDP

LPtoHIMETRIC

MaskBIt

MoveTo

OffsetClipRgn

OffsetViewpotOrg

OffsetWindowOrg

PaintRgn

PatBIt

Pie

PlayMetafile

PIgBIt

PolyBezier

PolyBezierTo

PolyDraw

Polygon

Polyline

PolylineTo

PolyPolygon

PolyPolyline

PtVisible

QueryAbort

RealizePalette

Rectangle

RectVisible

ReleaseAttribDC

ReleaseOutputDC

ResetDC

RestoreDG

RoundRect

SaveDC

ScaleViewportExt

ScaleWindowExt

ScrollDC

SelectClipPath

SelectClipRgn

SelectObject

SelectPalette

SelectStockObject

SetAbortProc

SetArcOirection

SetAttribDC

SetBkColor

SetBkMode

SetBoundsRect

SetBrushOrg

SetCоlorAdjustment

SetMapMode

SetMapperFlags

SetMiterLimit

SetOutputDC

SetPixel

SetPixelV

SetPolyFillMode

SetROP2

SetStretchBltMode

SetTextAlign

SetTextCharacterExtra

SetTextColor

SetTextJustification

SetViewportExt

SetViewportOrg

SetWindowExt

SetWindowOrg

Start Doc

StartPage

StretchBIt

StrokeAndFillPath

StrokePath

TabbedTextOut

TextOut

UpdateColors

WidenPath

В нашем случае для вывода в объекте вида (соответствующего клиентской области окна) был использован метод TextOut класса CDC. Методу OnDraw() передается указатель pDC, ссылающийся на контекст устройства для нашего вида. Чтобы вывести текст welcome_string в клиентской области, достаточно выполнить следующую строку:

pDC->TextOut(0, 0, welcome_string);

Методу TextOut () передаются координаты левого верхнего угла той области окна, где должна располагаться наша строка. В нашем случае текст выводится с точки (0,0) -- левого верхнего угла клиентской области. Затем метод получает саму строку, welcome_string.

Итак, выполнение этой строки программы приводит к тому, что наша строка выводится на экран. Так данные программы отображаются в объекте вида. В последующих уроках мы узнаем об объекте вида намного больше, потому что именно с ним будет связана основная часть программирования. Исходный текст объекта вида находится в файлах welcomeView.h/welcomeView.cpp.

В различные моменты работы программа может передавать методу OnDraw() разные контексты устройств. Например, когда мы добавили код в метод OnDraw(), в нашей программе появилась возможность вывода на печать. Если пользователь выполнит команду File >* Print или нажмет кнопку с принтером на панели инструментов, программа передаст методу OnDraw() контекст устройства для принтера и наш текст будет напечатан. Если вы захотите предпринять какие-то специальные действия для подготовки печати (например, особым образом отформатировать свой документ), можете внести соответствующий код в метод OnPreparePrinting().

// welcomeView.h : интерфейс класса CWelcomeView

//

//////////////////////////////////////////////////////////

#if !defined(AFX_WELCOMEVIEW_H__AF072C8B_900A_11D0_8860_444553540000__INCLUDED_)

#define AFX_WELCOMEVIEW_H__AF072C8B_900A_11D0_8860_444553540000__INCLUDED_

#if _MSC_VER >= 1000

#pragma once

#endif // _MSC_VER >= 1000

class CWelcomeView : public CView

{

protected: // создание только при сериализации

CWelcomeView();

DECLARE_DYNCREATE(CWelcomeView)

// Атрибуты

public:

CWelcomeDoc* GetDocument();

// Операции

public:

// Переопределения

// Переопределения виртуальных функций, сгенерированные ClassWizard

//{{AFX_VIRTUAL(CWelcomeView)

public:

virtual void OnDraw(CDC* pDC); // переопределяется для рисования

// в текущем виде

virtual BOOL PreCreateWindow(CREATESTRUCT& cs);

protected:

virtual BOOL OnPreparePrinting(CPrintInfo* pInfo);

virtual void OnBeginPrinting(CDC* pDC, CPrintInfo* pInfo);

virtual void OnEndPrinting(CDC* pDC, CPrintInfo* pInfo);

//}}AFX_VIRTUAL

// Реализация

public:

virtual ~CWelcomeView();

#ifdef _DEBUG

virtual void AssertValid() const;

virtual void Dump(CDumpContext& dc) const;

#endif

protected:

// Сгенерированные функции схемы сообщений

protected:

//{{AFX_MSG(CWelcomeView)

// ВНИМАНИЕ - здесь ClassWizard вставляет и удаляет функции класса.

// НЕ ИЗМЕНЯЙТЕ содержимое этих блоков сгенерированного кода!

//}}AFX_MSG

DECLARE_MESSAGE_MAP()

};

#ifndef _DEBUG // отладочная версия - в welcomeView.cpp

inline CWelcomeDoc* CWelcomeView::GetDocument()

{ return (CWelcomeDoc*)m_pDocument; }

#endif

///////////////////////////////////////////////////////////

//{{AFX_INSERT_LOCATION}}

// Microsoft Visual C++ вставляет дополнительные объявления

// перед предшествующей строкой.

#endif

// !defined(AFX_WELCOMEVIEW_H__AF072C8B_900A_

// 11D0_8860_444553540000__INCLUDED_)

// welcomeView.cpp : реализация класса CWelcomeView

//

#include "stdafx.h"

#include "welcome.h"

#include "welcomeDoc.h"

#include "welcomeView.h"

#ifdef _DEBUG

#define new DEBUG_NEW

#undef THIS_FILE

static char THIS_FILE[] = __FILE__;

#endif

//////////////////////////////////////////////////////////

// CWelcomeView

IMPLEMENT_DYNCREATE(CWelcomeView, CView)

BEGIN_MESSAGE_MAP(CWelcomeView, CView)

//{{AFX_MSG_MAP(CWelcomeView)

// ВНИМАНИЕ - здесь ClassWizard добавляет и удаляет макросы схемы.

// НЕ ИЗМЕНЯЙТЕ содержимое этих частей сгенерированного кода!

//}}AFX_MSG_MAP

// Стандартные команды печати

ON_COMMAND(ID_FILE_PRINT, CView::OnFilePrint)

ON_COMMAND(ID_FILE_PRINT_DIRECT, CView::OnFilePrint)

ON_COMMAND(ID_FILE_PRINT_PREVIEW, CView::OnFilePrintPreview)

END_MESSAGE_MAP()

/////////////////////////////////////////////////////////

// Создание/уничтожение CWelcomeView

CWelcomeView::CWelcomeView()

{

// TODO: добавьте код конструктора

}

CWelcomeView::~CWelcomeView()

{

}

BOOL CWelcomeView::PreCreateWindow(CREATESTRUCT& cs)

{

// TODO: Измените класс окна или его стили, редактируя

// содержимое CREATESTRUCT cs

return CView::PreCreateWindow(cs);

}

/////////////////////////////////////////////////////

// Рисование в CWelcomeView

void CWelcomeView::OnDraw(CDC* pDC)

{

CString welcome_string = "Добро пожаловать в Visual C++";

CWelcomeDoc* pDoc = GetDocument();

ASSERT_VALID(pDoc);

pDC->TextOut(0, 0, welcome_string);

// TODO: добавьте код для отображения данных

}

//////////////////////////////////////////////////////////

// Печать в CWelcomeView

BOOL CWelcomeView::OnPreparePrinting(CPrintInfo* pInfo)

{

// Стандартная подготовка

return DoPreparePrinting(pInfo);

}

void CWelcomeView::OnBeginPrinting(CDC* /*pDC*/, CPrintInfo* /*pInfo*/)

{

// TODO: добавьте дополнительную инициализацию перед печатью

}

void CWelcomeView::OnEndPrinting(CDC* /*pDC*/, CPrintInfo* /*pInfo*/)

{

// TODO: добавьте код для "сборки мусора" после печати

}

///////////////////////////////////////////////////////////

// Диагностика в CWelcomeView

#ifdef _DEBUG

void CWelcomeView::AssertValid() const

{

CView::AssertValid();

}

void CWelcomeView::Dump(CDumpContext& dc) const

{

CView::Dump(dc);

}

CWelcomeDoc* CWelcomeView::GetDocument() // не-отладочная версия

// является встроенной

{

ASSERT(m_pDocument->IsKindOf(RUNTIME_CLASS(CWelcomeDoc)));

return (CWelcomeDoc*)m_pDocument;

}

#endif //_DEBUG

Объект вида отображает данные программы, которые обычно хранятся в объекте документа. Сейчас мы рассмотрим последний из четырех основных объектов нашей программы.

Исследуем объект документа

В объекте документа хранятся данные программы. В примере welcome нам потребовался только объект welco(ne_st ring. Для простоты мы разместили его в объекте вида, но на самом деле ему следовало бы находиться в объекте документа.

Как разместить welcome_st ring в объекте документа? Прежде всего нам следовало бы объявить welcome_string в заголовочном файле документа welcomeDoc.h:

// welcomeDoc.h : интерфейс класса CWelcomeDoc

//

////////////////////////////////////////////////////////////

#if !defined(AFX_WELCOMEDOC_H__AF072C89_900A_11D0_8860_444553540000__INCLUDED_)

#define AFX_WELCOMEDOC_H__AF072C89_900A_11D0_8860_444553540000__INCLUDED_

#if _MSC_VER >= 1000

#pragma once

#endif // _MSC_VER >= 1000

class CWelcomeDoc : public CDocument

{

protected: // создание только при сериализации

CWelcomeDoc();

DECLARE_DYNCREATE(CWelcomeDoc)

CString welcome_String;

.

.

.

}

Затем мы инициализируем объект welcome_st ring в конструкторе класса документа, расположенном в файле welcomeDoc.cpp:

CWelcomeDoc::CWelcomeDoc()

{

welcome_string = "Добро пожаловать в Visual C++!"

}

Данные хранятся в объекте документа и готовы к работе -- но как обратиться к ним из объекта вида?

Обращение к документу из вида

Если взглянуть на код, сгенерированный AppWizard для нашего класса вида, можно заметить, что в нем уже есть фрагмент для получения указателя на объект документа с помощью метода GetDocument() класса вида. AppWizard присвоил этому указателю имя pDoc:

void CWelcomeView::OnDraw(CDC* pDC)

{

CWelcomeDoc* pDoc = GetDocument();

ASSERT_VALID(pDoc);

.

.

}

Возможно, вы обратили внимание на строку ASSERT_VALID(pDoc) в приведенном выше фрагменте. Здесь Visual C++ вызывает макрос ASSERT_VALID и проверяет, что все прошло нормально и полученным ...


Подобные документы

  • Программирование и структура программы на языке Turbo Pascal и MS Visual C++6.0. Вычисление площади круга. Реализация программы в системе Turbo Pascal и MS VISUAL C++6.0 для Windows. Структура окна ТРW. Сохранение текста программы в файле на диске.

    лабораторная работа [3,7 M], добавлен 22.03.2012

  • Принципы визуального программирования. Создание программы, генерирующей звук через определенные промежутки времени. Visual Basic как средство разработки прототипов программы, для разработки приложений баз данных и компонентного способа создания программ.

    лабораторная работа [1,1 M], добавлен 10.12.2014

  • Теоретические основы разработки Windows-приложений с использованием библиотеки MFC. Создание приложения с помощью Visual C++. Описание логической структуры приложения. Установка и запуск программы. Входные и выходные данные. Преимущество MFC библиотек.

    курсовая работа [563,2 K], добавлен 21.06.2011

  • Исследование теоретических аспектов разработки программы посредством использования Visual Basic. Анализ достоинств и недостатков данного языка программирования. Изучение особенностей создания интерфейса приложения. Основные этапы реализации программы.

    практическая работа [460,6 K], добавлен 22.01.2013

  • Техника создания графики при помощи API функций, экспортируемых библиотекой GDI32.DLL. Разработка на языке программирования С++ в среде программирования Microsoft Visual C++ программы для отображения часов реального времени в цифровом и аналоговом виде.

    курсовая работа [2,8 M], добавлен 27.01.2010

  • Основы языка Visual Prolog. Введение в логическое программирование. Особенности составления прологов, синтаксис логики предикатов. Программы на Visual Prolog. Унификация и поиск с возвратом. Использование нескольких значений как единого целого.

    лекция [120,5 K], добавлен 28.05.2010

  • Объектно-ориентированная технология создания программ. Среда разработки Visual Studio.NET. Особенности среды Microsoft Visual Studio 2010. Приложения C# для расчетов по формулам, консольный ввод-вывод. Форматирование значений данных. Программы с циклами.

    методичка [2,1 M], добавлен 11.09.2014

  • Теоретические основы создания баз данных в Visual Foxpro 9.0. Описание программы, использование ее команд. Создание табличной базы данных, отношений между таблицами в многотабличной базе данных больных в больнице. Редактирование табличного отчета.

    курсовая работа [681,2 K], добавлен 19.12.2013

  • Разработка программы FileInfo, выдающей полную информацию о заданном файле с применением языка программирования С++, используя API функции Win 32. Использование пространств имён .NetFramework. Руководство пользователя и системные требования программы.

    курсовая работа [1,2 M], добавлен 25.04.2012

  • Глoбальныe фyнкции AFX и API. Сoзданиe пpилoжeния с пoмoщью Visual C++. Фyнкциoнальнoe назначeниe, описание логической структуры разрабатываемой программы "Десятичные дроби". Тpeбoвания к тexничeскoмy oбeспeчeнию, листинг и тестирование данной программы.

    курсовая работа [2,7 M], добавлен 21.06.2011

  • Структура и основные операции коммерческого банка. Использование языка программирования Visual Basic for Application, математическая формулировка задачи. Разработка модуля программы расчёта кредитов и депозитов. Схема алгоритма выполнения программы.

    курсовая работа [2,9 M], добавлен 09.04.2012

  • Общие сведения о работе программы в среде программирования Microsoft Visual Studio 2008, на языке программирования C++. Ее функциональное назначение. Инсталляция и выполнение программы. Разработанные меню и интерфейсы. Алгоритм программного обеспечения.

    курсовая работа [585,5 K], добавлен 24.03.2009

  • Разработка приложения Windows "Учет заказов и продаж". Структура базы данных, информационное и программное обеспечение. Описание программы на языке Visual C+ с использованием технологии Microsoft.net, элементы управления и руководство пользователя.

    курсовая работа [4,8 M], добавлен 25.06.2011

  • Создание программы на языке Visual C++ с использованием библиотеки MFC для тестирования знаний пользователя в области геометрии. Генерирование тестовых заданий, введение ответа, оценка результата; логическая структура приложения; техническое обеспечение.

    курсовая работа [2,1 M], добавлен 26.06.2011

  • Разработка программного продукта с помощью языка программирования Visual Basic. Описание интерфейса пользователя и возможностей программы. Исходный код основных модулей. Программа, демонстрирующая основные возможности диаграмм и среды Visual Basic.

    контрольная работа [989,9 K], добавлен 29.03.2011

  • Создание приложения Windows Forms в среде Microsoft Visual Studio 2008. Разработка программы "Курсовой" для организации работы по учёту курсовых работ в учебных заведениях с возможностью добавления, удаления, редактирования и поиска информации.

    курсовая работа [2,2 M], добавлен 28.06.2011

  • Теоретические основы написания Windows-приложений с использованием библиотеки MFC. Основы программирования под Windows. Проектирование приложений в среде Microsoft Visual C++. Описание логической структуры приложения, его функциональное назначение.

    курсовая работа [1,3 M], добавлен 12.12.2011

  • Основы языка программирвоания C++. Элементы управления в Microsoft Visual C++. Алгоритмические конструкции языка программирования Visual C++ и базовые элементы управления. Глобальные константы и переменные. Управление программой с помощью клавиатуры.

    курсовая работа [1,7 M], добавлен 08.04.2015

  • Язык программирования Visual Basic: краткая история возникновения, значение и общая характеристика. Изучение основных свойств Visual Basic, синтаксис языка. Обзор ключевых операторов Visual Basic, пользовательские процедуры и функции данного языка.

    контрольная работа [36,4 K], добавлен 23.07.2014

  • Разработка программы "Виселица" с использованием программной среды Visual Basic и средств объектно-ориентированного программирования: программные требования, описание алгоритма, блок-схема программы и дополнительной процедуры. Листинг программы.

    курсовая работа [188,2 K], добавлен 28.06.2009

Работы в архивах красиво оформлены согласно требованиям ВУЗов и содержат рисунки, диаграммы, формулы и т.д.
PPT, PPTX и PDF-файлы представлены только в архивах.
Рекомендуем скачать работу.