Студопедия

КАТЕГОРИИ:


Архитектура-(3434)Астрономия-(809)Биология-(7483)Биотехнологии-(1457)Военное дело-(14632)Высокие технологии-(1363)География-(913)Геология-(1438)Государство-(451)Демография-(1065)Дом-(47672)Журналистика и СМИ-(912)Изобретательство-(14524)Иностранные языки-(4268)Информатика-(17799)Искусство-(1338)История-(13644)Компьютеры-(11121)Косметика-(55)Кулинария-(373)Культура-(8427)Лингвистика-(374)Литература-(1642)Маркетинг-(23702)Математика-(16968)Машиностроение-(1700)Медицина-(12668)Менеджмент-(24684)Механика-(15423)Науковедение-(506)Образование-(11852)Охрана труда-(3308)Педагогика-(5571)Полиграфия-(1312)Политика-(7869)Право-(5454)Приборостроение-(1369)Программирование-(2801)Производство-(97182)Промышленность-(8706)Психология-(18388)Религия-(3217)Связь-(10668)Сельское хозяйство-(299)Социология-(6455)Спорт-(42831)Строительство-(4793)Торговля-(5050)Транспорт-(2929)Туризм-(1568)Физика-(3942)Философия-(17015)Финансы-(26596)Химия-(22929)Экология-(12095)Экономика-(9961)Электроника-(8441)Электротехника-(4623)Энергетика-(12629)Юриспруденция-(1492)Ядерная техника-(1748)

Работа с реестром Windows

Пересылка протокола X11

Копирование файлов при помощи ssh

Для копирование файлов с одного компьютера на другой можно использовать команду scp. Синтаксис команды следующий:

scp -pr [[user1@]host1:]file1... [[user2@]host2:]file2

Использование ключа -p позволяет сохранить время доступа и модификации файла и права доступа к нему, а ключ -r используется для рекурсивного копирования каталогов.

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

Задание 5: Создайте в каталоге /tmp файл и скопируйте его на другую машину, также в каталог /tmp.

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

Например, для запуска на удаленном хосте программы xterm следует выполнить следующую команду:

ssh -X host xterm

Задание 6: Запустите на другом компьютере программу xterm.

Для того, чтобы запущенная программа выполнялась в фоновом режиме, следует добавить к команде ssh ключ -f:

ssh -f -X host xflame

 

Задание 7: Запустите на разных компьютерах программы xcalc, xclock, xeyes, xload

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

 

Задание 8:Запустите на удаленном компьютере программу xflame при помощи ssh:
ssh -f -X host xflame        
Теперь выполните следующие команды:        
xhost +host        
ssh -f host xflame -display $HOSTDISPLAY        
xhost -host        
При этом программа xflame будет использовать стандартный протокол X11 без шифрования.
Наконец, запустите программу xflame на локальном компьютере.      
       

 

 

Цель: создание диалогового приложения для операционной системы Windows NT, которое может быть запущено ограниченное число раз. Количество запусков программы хранится в реестре.

Задание: написать программу согласно варианту задания. Программа должна запускаться только три раза. Количество запусков должно храниться в реестре.

Варианты.

1. Создать диалоговое приложение, которое при запуске запрашивает пароль. Если пароль неверен, то приложение должно автоматически закрываться.

2. Создать диалоговое приложение, осуществляющее ввод строки, выбранное пользователем преобразование над ней и вывод ее на экран по нажатию кнопки. Должны выполняться следующие преобразования: приведение всех букв к верхнему регистру, перестановка символов в обратном порядке, замена латинских букв на русские. Преобразования могут выполняться по одному, по два или все три сразу.

3. Создать диалоговое приложение, осуществляющее ввод строки, преобразование над ней согласно установленному режиму и вывод ее на экран по нажатию кнопки. Должны выполняться следующие преобразования: замена латинских букв на русские (кроме q, w, y, j) (режим 1); замена русских букв на латинские (кроме ё, ж, й, ч, ш, щ, ъ, ы, ь, э, ю, я) (режим 2). Режим должен задаваться при помощи радиокнопок.

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

5. Создать диалоговое приложение, осуществляющее запись в текстовый файл последовательности из 10 целых чисел по нажатию кнопки. Программа должна работать в двух режимах: 1) генерация случайных чисел; 2) ввод чисел вручную. В первом режиме пользователем должен задаваться диапазон чисел. При изменении режима соответствующие ему элементы окна должны разблокироваться/блокироваться.

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

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

8. Создать диалоговое приложение, позволяющее вычислять определенные интегралы вида: ; и , где a, b, c, n, q – рациональные числа. Если введенные числа не соответствуют друг другу, должно выводиться предупредительное сообщение.

9. Создать диалоговое приложение, осуществляющее рисование графика функции sin(wt+j). Параметры w и j должны задаваться пользователем.

10. Создать диалоговое приложение, вычисляющее значение выражения ax 3+ bx 2+ cx + d или log n x в зависимости от выбора пользователя. Значения a, b, c, d, n должны вводиться пользователем. При следующем запуске программы элементы диалогового окна должны быть заполнены последними значениями от предыдущего запуска.

11. Создать диалоговое приложение, осуществляющее сортировку чисел в массиве по возрастанию. Массив должен задаваться пользователем. Размер массива – не более 10 чисел. Если длина массива равна нулю, должно выводиться предупредительное сообщение.

 

Для создания диалогового приложения необходимо создать проект CLR Windows Forms Application (пункт меню File->New->Project). В поле «Name» ввести название проекта, в поле «Location» ввести путь к каталогу, где будет создан проект (для выбора каталога можно воспользоваться кнопкой «Browse…» (рисунок 1). Поле «Solution Name» заполнится автоматически.

Рисунок 1

 

После создания проекта рабочая область среды будет иметь вид, показанный на рисунке 2.

Вкладка, где расположены элементы интерфейса
Окно «Свойства»
Главное окно приложения
Список файлов проекта

Рисунок 2

Созданный проект будет включать в себя файлы:

– Form1.h – в нем будет описан класс Form1, описывающий окно программы (это имя класса среда задает автоматически);

– Form1.resX, resource.h и app.rs – в них будут определены ресурсы, которые используются в классе form1;

– stdafx.h и stdafx.cpp – эти файлы создаются автоматически для формирования предкомлиллерного заголовка и типов данных;

– app.ico – иконка создаваемой программы;

– «имя созданного проекта». cpp – главный исходный файл приложения. В нем записан код, отвечающий за отображения окна программы на экране (этот код генерируется средой автоматически). В этом же файле можно прописать действия, которые должны выполняться приложением до того, как его окно будет отображено на экране;

– AssemblyInfo.cpp – в нем записаны атрибуты, которые необходимы для изменения метаданных ассемблера при создании исполняемого файла. Этот файл создается автоматически, в нем ничего изменять не надо;

– ReadMe.txt – в нем записана краткая информация о файлах проекта.

Из всех перечисленных изменять придется только файлы «имя созданного проекта». cpp и Form1.h.

Сначала необходимо разработать интерфейс приложения. Для этого с вкладки «ToolBox» необходимо перетащить необходимые элементы интерфейса на окно приложения и расположить их там в желаемом порядке.

Затем для каждого элемента необходимо задать его свойства. Для этого необходимо открыть окно Properties (см. рисунок 2) нажатием правой кнопки мыши на выбранном элементе. (Если эту вкладку не закрывать, то она останется на рабочем столе, и в ней будут отображаться свойства текущего выбранного элемента). Свойства отвечают за внешний вид элемента (размер, цвет, шрифт, видимость и т.п.), за его положение на главном окне. Значения некоторых свойств изменяются автоматически при перемещении элемента по главному окну и при изменении его размеров. При этом в файл Form1.h автоматически будет добавляться код, описывающий свойства элементов.

Затем необходимо для каждого элемента необходимо написать функции, обработчики событий, которые с ним могут произойти в приложении. Для этого необходимо перейти на вкладку Events в окне Properties (рисунок 3), выбрать там нужное событие и щелкнуть на нем мышью (двойной щелчок). При этом рядом с событием будет написано имя функции, которая будет его обрабатывать. Имя сформируется автоматически.

Функции-обработчики
Список событий
Вкладка Events
Вкладка Properties

 

Рисунок 3

В файле Form1.h появится выбранная функция. Внутри ее тела необходимо написать действия, которые будут выполняться при наступлении события.

Некоторые элементы интерфейса.

1. Кпопка Button.

Свойства:

– Text – надпись на кнопке;

– TextAlign – выравнивание надписи;

– Font – шрифт надписи (вид шрифта, размер, полужирный, подчеркнутый, курсив и т.п.);

– BackColor – цвет кнопки;

– BackGroundImage – картинка на кнопке;

– Visible – видимость. Если True – кнопка видна, если False – нет;

– Enabled – блокировка кнопки. Если True – кнопка незаблокирована, если False – заблокирована.

Событие:

– Click – нажатие.

2. Радиокнопка RadioButton.

– Text – надпись возле элемента;

– TextAlign – выравнивание надписи;

– Font – шрифт надписи (вид шрифта, размер, полужирный, подчеркнутый, курсив и т.п.);

– BackColor – цвет элемента;

– Image – картинка возле элемента;

– Visible – видимость. Если True – элемент виден, если False – нет;

– Enabled – блокировка элемента. Если True – элемент незаблокирован, если False – заблокирован;

– Checked – элемент выбран или нет («точка» стоит или нет). Если True – элемент выбран, если False – нет.

Событие:

– Click – нажатие;

– CheckedChanged – изменение состояния элемента (выбран или невыбран).

Для создания списка для выбора каких-то альтернатив при помощи радиокнопок их удобно расположить внутри элемента GroupBox. В этом случае при выборе какой-то радиокнопки все остальные автоматически станут невыбранными.

3. Текстовое поле TextBox.

Свойства:

– Text – надпись в поле;

– TextAlign – выравнивание надписи;

– Font – шрифт надписи (вид шрифта, размер, полужирный, подчеркнутый, курсив и т.п.);

– BackColor – цвет поля;

– Visible – видимость. Если True – поле видно, если False – нет;

– Enabled – блокировка поля. Если True – поле незаблокировано, если False – заблокировано;

– MaxLength – максимальное число символов, которое может быть введено в поле;

– ReadOnly – устанавливает возможность ввода символов в поле. Если True – поле становится только для чтения, если False – в поле возможен ввод символов;

– PasswordChar – символ, который будет отображаться в поле при вводе в него (используется для ввода пароля);

– Multiline – однострочное или многострочное будет поле. Если значение свойства равно True, то поле будет многострочным, если False – поле будет однострочным;

– Lines – массив строк в многострочном поле.

Событие:

– Click – нажатие;

– TextChanged – изменение текста в поле (возникает при изменении даже одного символа или при стирании даже одного символа);

– Enter – поле стало активным элементом, т.е. в него перешел фокус ввода (пользователь выбрал этот элемент для его изменения);

– Leave – поле утратило фокус ввода (пользователь закончил изменять элемент и перешел к другому элементу или ничего не изменил и перешел к другому элементу).

4. Поле для изображения pictureBox.

Свойства:

– Image – отображаемый рисунок;

– BackColor – цвет фона на поле;

– SizeMode – режим отображения картинки в поле. Режим может быть: АutoSize – размер поля изменяется под размер загружаемой в него картинки; CenterImage – загружаемая картинка отображается в центре поля. Если картинка больше чем поле, то она обрезается; Normal – загружаемая картинка отображается в левом верхнем углу поля. Если картинка больше чем поле, то она обрезается; StretchImage – размер картинки подгоняется под размер поля; Zoom – картинка масштабируется.

– Visible – видимость. Если True – поле видно, если False – нет;

– Enabled – блокировка поля. Если True – поле незаблокировано, если False – заблокировано;

– ImageLocation – путь к загружаемой картинке.

Событие:

– Click – нажатие.

5. Элемент CheckBox

Свойства:

– Text – надпись возле элемента;

– TextAlign – выравнивание надписи;

– Font – шрифт надписи (вид шрифта, размер, полужирный, подчеркнутый, курсив и т.п.);

– BackColor – цвет элемента;

– Image – картинка возле элемента;

– Visible – видимость. Если True – элемент виден, если False – нет;

– Enabled – блокировка элемента. Если True – элемент незаблокирован, если False – заблокирован;

– Checked – элемент выбран или нет («галочка» стоит или нет). Если True – элемент выбран, если False – нет.

Событие:

– Click – нажатие;

– CheckedChanged – изменение состояния элемента (выбран или невыбран).

6. Выпадающий список ComboBox.

Свойства:

– Text – надпись в поле;

– Font – шрифт надписи (вид шрифта, размер, полужирный, подчеркнутый, курсив и т.п.);

– BackColor – цвет поля;

– Visible – видимость. Если True – поле видно, если False – нет;

– Enabled – блокировка поля. Если True – поле незаблокировано, если False – заблокировано;

– Items – массив строк в списке (элементы списка);

– SelectedIndex – номер выбранного элемента массива.

Событие:

– Click – нажатие;

– TextChanged – изменение текста в поле (возникает при изменении даже одного символа или при стирании даже одного символа);

– Enter – поле стало активным элементом, т.е. в него перешел фокус ввода (пользователь выбрал этот элемент для его изменения);

– Leave – поле утратило фокус ввода (пользователь закончил изменять элемент и перешел к другому элементу или ничего не изменил и перешел к другому элементу);

– SelectedIndexChanged – изменение номера выбранного элемента из списка (пользователь выбрал из списка другой элемент).

Для добавления в список нового значения необходимо вызвать метод Add(строка с добавляемым значением).

Для использования в программе стандартных диалогов для открытия или сохранения файлов, выбора цветов или шрифта и т.п. необходимо на форму в любое место добавить соответствующие элементы с вкладки «ToolBox». Они добавятся в проект как ресурсы и будут отображаться внизу под главным окном программы (рисунок 4).

Свойства диалога открытия или диалога сохранения файлов:

– FileName – имя файла, выбранное пользователем;

– Filter – строка, в которой указываются расширения файлов для выбора. Например, для выбора файлов с изображениями строка будет иметь вид картинки|*.bmp;*.jpg;*.gif;

– FilterIndex – расширение, которое будет отображаться в верхнем поле выпадающего списка для выбора расширений в диалоге (рисунок 5);

– MultiSelect – разрешает или запрещает выбор сразу нескольких файлов при открытии. Если значение свойства равно True, то можно выбирать несколько файлов, если False – то можно выбирать только один файл.

Для отображения диалога необходимо вызвать его метод Show(). После закрытия диалога он возвращает значение – результат своей работы, который зависит от того, какая кнопка была нажата пользователем. Тип возвращаемого значения System::Windows::Forms::DialogResult. Само значениеможет быть равно ОК (если была нажата кнопка ОК) или Cancel (если была нажата кнопка Cancel).

Введенные пользователем строки в текстовые поля хранятся в их свойстве Text, которое не доступно для непосредственных преобразований над отдельными символами. Поэтому перед выполнением каких-либо преобразований необходимо переписать введенную строку в переменную типа String^.

String^ s = textBox1->Text;

После этого к отдельным элементам строки s можно обращаться как к элементам массива, однако из них можно только читать значения, но не записывать в них. Поэтому можно объявить массив типа char или wchar_t (для символов юникода), и преобразованные символы записывать в него. В последний элемент массива необходимо записать значение `\0` (конец строки), чтобы при выводе результатов не было «мусора».

Для вывода результатов обратно в текстовое поле необходимо сначала создать переменную типа String^ и заполнить ее значениями из массива, а затем приравнять значение этой строки свойству Text.

wchar_t l[10];

String^ s1=gcnew String(l);

textBox1->Text=s1;

Для перевода строк в числа и чисел в строки используется специальный класс Convert. Метод Convert::ToInt32() преобразует строку в целое число, метод Convert::ToDouble() – в дробное число, метод Convert::ToChar() преобразует число в символ юникода, метод Convert::ToString() преобразует число в строку.

int s=Convert::ToInt32(textBox1->Text);

textBox1->Text=Convert::ToString(s);

Преобразования строк в числа могут приводить к возникновению исключений, из-за которых операционная система прерывает работу программы. Исключение возникает, когда в строке среди цифр встречаются какие-либо другие символы. Для выявления таких ситуаций необходимо либо перед выполнением преобразования проверить содержимое введенной строки, либо воспользоваться конструкцией try…catch.

String^ n;double defaultValue;try { defaultValue = Convert::ToDouble(n); } catch (Exception^ ex) { defaultValue = 100; }

В операторе try помещается код программы, могущий вызвать исключение. В операторе catch помещается код, который необходимо выполнить при возникновении исключения.

Для вывода предупреждающих сообщений в программе можно воспользоваться методом Show класса MessageBox. При этом отобразится диалоговое окошко с сообщением и кнопками.

MessageBox::Show("The calculations are complete",

"My Application", MessageBoxButtons::OKCancel,

MessageBoxIcon::Asterisk);

Первый параметр задает сообщение, которое необходимо вывести в окошке, второй параметр – это заголовок окошка, третий параметр обозначает кнопки на форме, четвертый параметр – иконку на окошке.

Третий параметр может принимать значения:

– MessageBoxButtons::AbortRetryIgnore – три кнопки «Abort», «Retry» и «Ignore»;

– MessageBoxButtons::ОК – кнопка «ОК»;

– MessageBoxButtons::OKCancel – две кнопки «ОК» и «Cancel»;

– MessageBoxButtons::RetryCancel – две кнопки «Retry» и «Cancel»;

– MessageBoxButtons::YesNo – две кнопки «Yes» и «No»;

– MessageBoxButtons::YesNoCancel – три кнопки «Yes», «No» и «Cancel».

Четвертый параметр может принимать значения:

– Asterisk – буква i в кружочке;

– Error – крестик в красном кружочке;

– Exclamation – восклицательный знак в треугольнике;

– Hand – крестик в красном кружочке;

– Information – буква i в кружочке;

– None – без картинки;

– Question – вопросительный знак в кружочке;

– Stop – крестик в красном кружочке;

– Warning – восклицательный знак в треугольнике.

 

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

Окно приложения показано на рисунке 4. На форму были добавлены элементы: pictureBox, три кнопки (Открыть, Инвертировать цвет, Выход) и элемент openFileDialog. Для каждой из кнопок были написаны обработчики события Click.

Рисунок 4

По нажатию кнопки «Открыть» должен вызываться стандартный диалог для открытия файлов (рисунок 5).

Рисунок 5

Затем необходимо проверить, какую кнопку «Открыть» или «Отмена» нажал пользователь и выбрал ли он какой-нибудь файл. После этого отобразить выбранное изображение в поле pictureBox. Код, реализующий эти действия, имеет вид

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

//System::Windows::Forms::DialogResult result;// переменная для хранения результата, который возвращает диалог. Нужно, чтобы определить, какую кнопку на диалоге нажал пользователь

 

System::Windows::Forms::DialogResult result;

//отобразить окно для выбора файлов

result=this->openFileDialog1->ShowDialog();

//если пользователь выбрал файл и нажал ОК, то

if (result == System::Windows::Forms::DialogResult::OK){

//получить имя файла, который выбрал пользователь

String^ path = openFileDialog1->FileName;

//отобразить картинку

this->pictureBox1->ImageLocation=path;

this->pictureBox1->Load();

//

}

//а если пользователь нажал Cancel, то ничего не делать

По нажатию кнопки «Инвертировать цвета» происходит инверсия цветов изображения. Из файлов.bmp изображение заносится в свойство Image элемента pictureBox. Это свойство является объектом класса Bitmap. В этом объекте цвет каждой точки состоит из трех компонентов R-красный, G-зеленый, B-синий. Каждая компонента – это целое число от 0 до 255. Чтобы цвет инвертировался, необходимо каждой компоненте присвоить значение разности 255 и ее текущего значения по модулю 256. Так как такое преобразование выполняется для каждой точки, то его удобно выполнять в циклах по ширине и высоте изображения. Код, реализующий эти действия, имеет вид

int x,y; //переменные, которые будут использоваться как счетчики циклов

Bitmap^ image1; //переменная, в которой будет храниться промежуточная

//картинка из исходного изображения

image1 = gcnew Bitmap(this->pictureBox1->Image);//сделать промежуточную картинку в памяти, над которой проводить все изменения

//изменения картинки (здесь инверсия цветов)

for (x = 0; x < image1->Width; x++)

{

for (y = 0; y < image1->Height; y++)

{

Color pixelColor = image1->GetPixel(x, y);//получить исходный цвет точки

Color newColor = Color::FromArgb((255-pixelColor.R)%256, (255-pixelColor.G)%256, (255-pixelColor.B)%256);//выполнить инверсию цвета точки

image1->SetPixel(x, y, newColor);//присвоить точке новый цвет

 

}

 

}

//конец изменения картинки

this->pictureBox1->Image = dynamic_cast<Image^>(image1);//преобразованную картинку опять записать в picturebox для отображения на экране

}

По нажатию кнопки «Выход» происходит закрытие приложения. Код, реализующий эти действия, имеет вид

this->Close();

 

Пример 2. Необходимо создать приложение, которое будет рисовать эллипсы и закрашивать их выбранным пользователем цветом. Эллипсов может быть один или два и вокруг них могут быть или не быть рамки.

Окно приложения показано на рисунке 6. На форму были добавлены элементы: выпадающий список comboBox, кнопка button (нарисовать), два элемента groupBox (рисунок и рамка), две радиокнопки radiobutton (один эллипс и два эллипса) и два элемента checkbox (квадрат и эллипс). Для кнопки был написан обработчик события Click.

Рисунок 6

По нажатию кнопки «Нарисовать» происходит рисование картинки. Для этого сначала создается объект Graphics, который содержит в себе методы для рисования простых фигур.

Graphics ^ g;

g = this->CreateGraphics();//нужно для работы с графикой!!

Потом форма очищается от предыдущего рисунка путем ее заливки цветом фона (в данном случае серым).

g->Clear(Color::Gray);//очистить рисунок

Для задания цвета анализируется, какой элемент из списка был выбран пользователем

// переменная для хранения цвета

Color customColor;

//создать цвет, выбранный пользователем в комбобоксе

switch(comboBox1->SelectedIndex)

{

case 0: customColor=Color::Red;break;

case 1: customColor=Color::White;break;

case 2: customColor=Color::Blue;break;

case 3: customColor=Color::Green;break;

case 4: customColor=Color::Yellow;break;

case 5: customColor=Color::Black;break;

case 6: customColor=Color::Brown;break;

case 7: customColor=Color::Orange;break;

case 8: customColor=Color::Purple;break;

case 9: customColor=Color::SkyBlue;break;

default:customColor=Color::Gray;//если пользователь ничего не выбрал

};

Затем создаются объекты Pen (карандаш) для рисования незакрашенных фигур и два объекта кисть (Brush) для рисования закрашенных фигур выбранным пользователем цветом.

Pen^ ki = gcnew Pen(Brushes::DeepSkyBlue);//создать карандаш

//создать кисть

SolidBrush^ br=gcnew SolidBrush(customColor);

//задать координаты для линейного градиента

Point startPoint, endPoint;

startPoint.X=100;startPoint.Y=170;

endPoint.X=300;endPoint.Y=270;

//создать кисть с линейным градиентом

Brush^ ii=gcnew LinearGradientBrush(startPoint,endPoint,

Color::SeaGreen,customColor);

После этого происходит рисование одного или двух эллипсов в зависимости от того, какая из радиокнопок выбрана

g->FillEllipse(br,200,100,200,100);//нарисовать эллипс кистью (закрашенный)

if (radioButton2->Checked==true) //если выбрана радиокнопка2, то

g->FillEllipse(ii,200,220,200,100);//нарисовать второй эллипс кистью (закрашенный с линейным градиентом)

и рисование рамки в зависимости от того, установлены или нет соответствующие элементы checkbox

if (checkBox1->Checked==true)//если выбран чекбокс1, то нарисовать квадрат

{

g->DrawLine(ki,170,50,450,50);//нарисовать линию

g->DrawLine(ki,170,330,450,330);//нарисовать линию

g->DrawLine(ki,170,50,170,330);//нарисовать линию

g->DrawLine(ki,450,50,450,330);//нарисовать линию

}

if (checkBox2->Checked==true)//если выбран чекбокс2, то нарисовать эллипс

g->DrawEllipse(ki,180,80,250,250);//нарисовать эллипс карандашом (незакрашенный)

 

Для того, чтобы хранить число запусков в реестре, необходимо создать в нем ключ, например в ветке CurrentUser. Затем в этом ключе создать параметр, хранящий в себе число запусков. При каждом запуске программы необходимо считывать значение этого параметра, анализировать и изменять его значение, а затем записывать его опять в реестр. Чтобы ограничить число запусков программы необходимо соответствующий код расположить в файле «имя созданного проекта». cpp до вызова метода Application::Run.

Для работы с реестром необходимо создать объект-ключ RegistryKey^. Для создания нового ключа в реестре используется функция Registry:: ветка реестра ->CreateSubKey, для открытия ключа – функция Registry:: ветка реестра ->OpenSubKey, для записи значения параметра – функция SetValue, для чтения значения параметра – функции GetValueNames и GetValue.

Пример.

//Прочитать нужный ключ реестра

RegistryKey^ rk = nullptr;

rk = Registry::CurrentUser->OpenSubKey("000xxx",true);

if (rk==nullptr) //если ключа нет, то первый запуск.

{

//ключ создается и в него записывается значение

RegistryKey^ nk = Registry::CurrentUser->CreateSubKey("000xxx");

nk->SetValue("NewKey", 1);//первый запуск

}

else //ключ есть

{//получить значения из ключа реестра

array<String^>^ name = rk->GetValueNames();

String^ value = rk->GetValue(name[0])->ToString();

//преобразовать его из строки в целое число

int ww;

ww=Convert::ToInt32(value);

//проверить текущее число запусков

if (ww>3)//если больше 3-х, то программа завершает работу

{ return 1;}

else //если меньше, то

{//увеличение на 1 числа запусков,

ww=ww+1;

//запись его в реестр

rk->SetValue("NewKey", ww);

//после чего программа будет выполняться дальше

} }

<== предыдущая лекция | следующая лекция ==>
Удаленный запуск программ | Описание прибора. Принцип действия
Поделиться с друзьями:


Дата добавления: 2014-12-07; Просмотров: 365; Нарушение авторских прав?; Мы поможем в написании вашей работы!


Нам важно ваше мнение! Был ли полезен опубликованный материал? Да | Нет



studopedia.su - Студопедия (2013 - 2024) год. Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав! Последнее добавление




Генерация страницы за: 0.204 сек.