Этот учебник покажет вам, как создать простое приложение Магазина Windows — Hello, world — на языке JavaScript. Это первое из четырех руководств, которые научат вас всему необходимому для построения приложений Магазина Windows.
Шаг 1. Создание нового проекта в Visual Studio.
Создадим новое приложение с именем HelloWorld . Инструкции
- Запустите Visual Studio Express 2012 для Windows 8. Откроется начальный экран Visual Studio Express 2012 для Windows 8. (В дальнейшем мы будем ссылаться на версию Visual Studio Express 2012 для Windows 8 просто как на «Visual Studio».)
- В меню File (Файл) выберите команду New Project (Новый проект). Откроется диалоговое окно New Project (Новый проект). Левая панель диалогового окна позволяет выбрать тип отображаемого шаблона.
- На левой панели разверните узел Installed (Установлено), разверните узел Templates (Шаблоны), затем JavaScript и выберите шаблон Windows Store (Магазин Windows). На центральной панели диалогового окна отображается список шаблонов проектов для JavaScript.
В этом руководстве мы используем шаблон Blank App. Этот шаблон не содержит данных и элементов управления пользовательского интерфейса, но предоставляет минимальные функциональные возможности для компиляции и запуска приложений Магазина Windows. Мы будем добавлять элементы управления и данные в процессе работы с этими руководствами.
- В центральной панели выберите шаблон Blank App.
- В текстовое поле Name (Имя) введите «HelloWorld».
- Снимите флажок Create directory for solution (Создать каталог для решения).
- Чтобы создать проект, нажмите кнопку ОК. Visual Studio создает проект и отображает его в обозревателе решений.
Компилирование всех файлов проекта в один EXE | Wpf
Хотя шаблон Blank App предоставляет минимальные возможности, он содержит несколько файлов.
- Файл манифеста (package.appxmanifest), в котором описывается ваше приложение (имя, описание, заголовок, начальная страница, экран-заставка и т. п.) и перечисляются файлы, содержащиеся в приложении.
- Набор больших и маленьких изображений эмблем (logo.png и smalllogo.png) для отображения на начальном экране.
- Изображение (storelogo.png) для представления вашего приложения в Магазине Windows.
- Экран-заставка (splashscreen.png), который будет отображаться при запуске вашего приложения.
- Файлы CSS и кода для библиотеки Windows для JavaScript (в папке References).
- Начальная страница (default.html) и соответствующий файл JavaScript (default.js), который выполняется при запуске приложения.
Для просмотра и изменения файлов дважды щелкните файл в обозревателе решений.
Эти файлы являются необходимыми для всех приложений Магазина Windows на языке JavaScript. Они должны содержаться в любом проекте, который вы создаете в Visual Studio.
Уроки C# / Как сделать EXE файл в Visual Studio
Шаг 2. Запуск приложения
На этот момент мы создали очень простое приложение. Если вы хотите увидеть, как оно выглядит, нажмите клавишу F5, чтобы построить, развернуть и запустить его. Сначала появится экран-заставка по умолчанию. Экран-заставка определяется изображением (splashscreen.png) и цветом фона (указанным в манифесте нашего приложения). Мы не будем рассматривать это здесь, но настройка экрана-заставки выполняется просто.
Экран-заставка исчезает, и появляется наше приложение. Оно содержит черный экран с текстом «Content goes here» (Место для содержимого).
Кнопка или команда для закрытия приложения отсутствует. Чтобы закрыть приложение, проведите пальцем от верхнего до нижнего края экрана или нажмите клавиши ALT+F4. Перейдите на начальный экран. Обратите внимание, что при развертывании приложения его плитка добавляется в группу последних элементов на начальном экране. Чтобы снова запустить приложение, коснитесь плитки приложения на начальном экране или щелкните ее либо нажмите клавишу F5 в Visual Studio, чтобы запустить приложение в отладчике.
Пока это приложение —только— поздравляет с успешным построением вашего первого приложения Магазина Windows.
Чтобы остановить отладку приложения и вернуться в Microsoft Visual Studio, нажмите клавиши ALT+TAB. Чтобы закрыть приложение, в Visual Studio щелкните Debug (Отладка) > Stop debugging (Остановить отладку). Невозможно выполнять редактирование в Visual Studio, находясь в режиме отладки.
Шаг 3. Изменение начальной страницы
Одним из файлов, которые Visual Studio создает для нас, является файл default.html, представляющий начальную страницу приложения. При запуске приложение отображает содержимое этой начальной страницы. Начальная страница также содержит ссылки на файлы кода приложения и таблицы стилей. Начальная страница приложения, созданная Visual Studio:
DOCTYPE html> html> head> meta charset=»utf-8″ /> title>HelloWorldtitle> link href=»//Microsoft.WinJS.1.0/css/ui-dark.css» rel=»stylesheet» /> script src=»//Microsoft.WinJS.1.0/js/base.js»>script> script src=»//Microsoft.WinJS.1.0/js/ui.js»>script> link href=»/css/default.css» rel=»stylesheet» /> script src=»/js/default.js»>script> head> body> p>Content goes herep> body> html>
Добавим новое содержимое в файл default.html. Так же, как и при добавлении в любой другой HTML-файл, вы добавляете ваше содержимое в элемент body. Для создания приложения вы можете использовать элементы HTML5 (с некоторыми исключениями). Это означает, что можно использовать такие элементы HTML5, как h1, p, button, div и img.
Изменение начальной страницы
-
Замените существующее содержимое в элементе body на заголовок первого уровня «Hello, world!», какой-нибудь текст, запрашивающий имя пользователя, элемент input, который принимает имя пользователя, элемент button и элемент div. Назначьте идентификаторы для объектов input, button и div .
body> h1>Hello, world!h1> p>What’s your name?p> input id=»nameInput» type=»text» /> button id=»helloButton»>Say «Hello»button> div id=»greetingOutput»>div> body>
Шаг 4. Создание обработчика события
При создании нашего первого проекта в Visual Studio был создан файл /js/default.js. В этот же файл мы запишем код, обеспечивающий взаимодействие с приложением для файла default.html.
Откройте файл default.js.
Прежде чем приступить к добавлению собственного кода, рассмотрим первую и последнюю строки в файле:
(function () < «use strict»; // Omitted code >)();
Вас может удивить их назначение. Эти строки кода являются оболочкой остального кода в файле default.js, которая превращает его в самостоятельно выполняющуюся анонимную функцию.
Теперь, когда вы знаете, что он делает, вы, возможно, спросите, зачем мы заключили наш код в самостоятельно выполняющуюся анонимную функцию. Заключение кода в анонимную функцию помогает избежать конфликтов совпадения имен или ситуаций непреднамеренного изменения значений. Это также исключает лишние идентификаторы из глобального пространства имен, что повышает быстродействие. Это кажется несколько странным, но такая практика полезна при программировании.
Следующая строка кода включает строгий режим для кода JavaScript. Строгий режим обеспечивает дополнительную проверку ошибок кода. Например, строгий режим запрещает использовать неявно объявленные переменные или назначать значение свойству, доступному только для чтения.
Рассмотрим оставшийся код в файле default.js. Он обрабатывает события activated и checkpoint в приложении. Подробнее эти события мы рассмотрим позже. Пока нам достаточно знать, что событие activated возникает при запуске приложения.
Определим обработчик события для объекта button. Наш новый обработчик события получает имя пользователя из элемента управления nameInput input и использует его для вывода приветствия в элементе greetingOutput div , который был создан вами в последнем разделе.
Использование событий, которые работают для ввода с помощью касания, мыши или пера
При работе с Windows 8 нет необходимости беспокоиться о различиях между касаниями, действиями мыши или другими способами ввода с помощью указателя. Вы можете использовать такие известные вам события, как click, и они будут работать для всех способов ввода.
Совет Ваше приложение может также использовать новые события MSPointer* и MSGesture*, которые используются для ввода с помощью касания, мыши или пера и могут предоставлять дополнительную информацию об устройстве, которое вызвало событие.
Продолжим работу и создадим обработчик события.
Создание обработчика события
-
В файле default.js после обработчика события app.oncheckpoint и перед вызовом app.start создайте функцию обработчика события click с именем buttonClickHandler , которая принимает единственный параметр eventInfo .
Источник: expert1.ucoz.com
Visual Studio — превращение приложения в исполняемый файл?
В VS я только тестировал и отлаживал код, но на самом деле никогда ничего не готовил для окончательной программы или выпуска. У некоторых из загруженных мной программ есть библиотеки DLL, которые должны находиться в папке, в которой они находятся, а у меня были программы, которые поставлялись как один .exe. Есть ли способ скомпилировать все файлы в одно приложение и не иметь внешних dll? Это плохая практика программирования по какой-то причине? Как мне скомпилировать мою VS-программу в один исполняемый файл?
Я знаю, что это вполне очевидный вопрос, поэтому я не могу найти ответ, потому что было бы слишком очевидно писать по нему какой-либо учебник.
mowwwalker 25 Дек 2011 в 06:47
Вы хотите создать установочный файл для своего приложения?
Kashif Khan
25 Дек 2011 в 06:50
3 ответа
Лучший ответ
При использовании управляемого языка, такого как C # или VB.NET, ILMerge является утилита, которую вы можете использовать.
ILMerge — это утилита для объединения нескольких сборок .NET в одну сборку .NET. Он работает как с исполняемыми файлами, так и с библиотеками DLL и имеет несколько опций для управления обработкой и форматом вывода.
vcsjones 25 Дек 2011 в 06:50
Если вопрос только в том, чтобы заставить VisualStudio создавать исполняемые программы, он делает это каждый раз, когда вы запускаете их в нем. Если вы используете все настройки по умолчанию, откройте папку проекта и найдите каталог / bin. Под ним находятся каталоги / debug и / release.
Если вы создаете свою программу в режиме отладки, посмотрите каталог / debug, если вы собираете ее в режиме выпуска, посмотрите каталог выпуска. VS поместит в этот каталог все, что нужно вашей программе. Вы можете скопировать все эти файлы на другой компьютер, на котором установлена среда выполнения .Net, и она должна работать.
Если вопрос больше касается объединения нескольких dll в один exe, на самом деле, на CodePlex есть учебное пособие по этому поводу:
Как вы знаете, в .NET больше нет необходимости в традиционном связывании объектного кода. Программа .NET обычно состоит из нескольких частей. Типичное приложение .NET состоит из исполняемой сборки, нескольких сборок в программном каталоге и нескольких сборок в глобальном кэше сборок. Когда программа запускается, среда выполнения объединяет все эти части в программу.
Связывание во время компиляции больше не требуется.
Но иногда все же полезно объединить все части, которые программа должна выполнить, в единую сборку. Например, вы можете упростить развертывание приложения, объединив программу, все необходимые библиотеки и все ресурсы в один файл .exe.
Наконец, если вопрос касается создания установщика для широкого распространения, у Яна Виллема Б есть образец для WIX: Использование WIX для создания установщика: краткое руководство
Источник: question-it.com
Сборка Qt-программ в среде Microsoft Visual Studio
Qt Designer. Быстрая разработка прототипов интерфейсов
Qt Designer – программа визуального проектирования интерфейса пользователя. Результатом работы этой программы является файл XML-описания формы, имеющий расширение .ui – <Имя формы>.ui (см. рисунок 1.7). Рисунок 1.7 – Схема компиляции-сборки приложения с формами интерфейса, созданными в Qt Designer Файлы, созданные Qt Designer в дальнейшем дополнительно обрабатываются специальным компилятором UIC (User Interface Compiler – Компилятор пользовательского интерфейса), который формирует код программы на С++ из его XML-описания. Результатом компиляции является файл ui_<Имя формы>.h. Этот файл содержит описание метода setupUi, использующего классы Qt и обеспечивающего создание разработанной формы. Автоматически созданный файл вместе с описанием класса формы передаются MOC для реализации необходимых дополнительных функций библиотеки Qt. После этого файлы приложения обрабатываются компилятором и компоновщиком С++. В результате – создается файл приложения. Помимо конструирования внешнего вида окна приложения Qt Designer позволяет:
- запрограммировать предусмотренные Qt (!) аспекты поведения формы и ее компонентов;
- связать метки (объекты класса QLabel) с другими виджетами так, что при щелчке мышкой на метке фокус ввода будет передаваться на ассоциированный виджет;
- определить порядок передачи фокуса ввода виджетам формы при нажатии клавиши Tab.
Примечание. Следует подчеркнуть, что описать поведение виджетов можно лишь в тех случаях, когда в приложении задействованы предусмотренные в классах виджетов сообщения сигналы и реакции на них – слоты. Новые сигналы и слоты можно объявлять при создании потомков классов виджетов специальными операторами Qt (см. раздел 2.3). Описание всех перечисленных связей виджетов – также на языке XML – добавляется в файл формы с расширением .ui. Исполняемый файл Qt Designer designer.exe может быть запущен как из консольного окна, так и непосредственно из Windows. При запуске на экране появляется главное окно приложения и перед ним диалоговое окно New Form (см. рисунок 1.8). Рисунок 1.8 – Вид конструктора форм при запуске программы В диалоговом окне предлагается выбрать шаблон для формы окна. В качестве таких шаблонов могут использоваться объекты классов QWidget, QDialog и QMainWindow. Затем, уже в Designer выполняют проектирование интерфейса. Выполним визуальное проектирование формы интерфейса приложения Hello, рассмотренного в разделе 1.1. Пример 1.4. Приложение Hello. Создание с использованием программы визуального проектирования формы. Создание главного окна приложения. В качестве основы формы будем использовать объект класса QWidget, как в предыдущем примере. Соответственно в ответ на запрос Designer выбираем шаблон (templates) Widget и нажимаем кнопку Create. В результате создается заготовка окна, озаглавленная Form – untitled, где Form – имя объекта класса QWidget по умолчанию, untitled (безымянный) – означает, что файл создаваемой формы приложения пока не имеет имени. На эту форму с левой панели Widget box перетаскиваем мышкой два виджета Label и PushButton (см. рисунок 1.9).
Рисунок 1.9 – Основные панели дизайнера и добавление виджетов на форму Полученную форму сохраняем под именем form.ui. Для этого используется пункт меню FileSave as… Далее, используя панели Инспектора объектов (Object Inspector) и Редактора свойств (Property Editor), выбираем объекты и присваиваем им новые имена, меняя свойство objectName: QWidget: objectName = Form objectName = win; QPushButton: objectName = pushButton objectName = button. Также с помощью Редактора свойств меняем заголовки виджетов (свойство text): label: text = ʺHello!ʺ; button: text = ʺCloseʺ. Управление расположением и размерами виджетов. Также как и при создании интерфейса вручную для управления размещением виджетов на форме Qt Designer использует компоновщики. Для добавления компоновщика компонуемые виджеты должны быть выделены, что можно сделать, щелкая мышкой по виджетам при нажатой клавиши Ctrl. Добавление компоновщиков и связывание с ними виджетов осуществляется выбором пунктов меню:
- FormLayout Horizontally – компоновать по горизонтали,
- FormLayout Vertically – компоновать по вертикали,
- FormLayout in a Grid – компоновать по сетке,
или нажатием соответствующих кнопок на панели компонентов дизайнера. Обратите внимание, что связывание главного компоновщика с окном происходит, если выбрать горизонтальную или вертикальную компоновку при отсутствии выделенных виджетов. Компоновку окна приложения выполняем следующим образом:
- label и button – компонуем по вертикали;
- окно приложения (при отсутствии выбранных виджетов) – компонуем по горизонтали.
После настройки виджетов и выполнения компоновки получаем готовую форму (рисунок 1.10), окончательный вариант которой не забываем сохранить, используя пункт меню File/Save. Рисунок 1.10 – Вид окна дизайнера после компоновки формы Связывание сигналов и слотов. Как уже говорилось выше, кроме визуального конструирование вида окон, Qt Designer позволяет связать заранее предусмотренные сигналы виджетов с такой же заранее предусмотренной реакцией других виджетов на эти сигналы. Для этого необходимо переключиться в режим Сигналы и слоты, выбрав пункт меню EditEdit Signals/Slots. Указание виджетов, между сигналом и слотом которых устанавливается связь, выполняется визуально: щелкаем левой клавишей мышки по виджету кнопки и, не отпуская левой клавиши, переносим указатель мышки на свободное место окна (см. рисунок 1.11). Выбранные виджеты связываются красной линией, после чего открывается окно Configure Connection, в котором выбираем слева сигнал clicked(), а справа слот close(). (Для того, чтобы справа появились доступные слоты необходимо внизу окна выбрать Show Signals and Slots inherited from QWidget – Показать сигналы и слоты, наследованные от QWidget). Для завершения операции необходимо нажать на кнопку OK.
Рисунок 1.11 – Вид окна при связывании сигнала от кнопки с закрытием окна После закрытия вспомогательного окна установленные связи на форме маркируются выбранными сигналом и слотом (см. рисунок 1.12).
Рисунок 1.12 – Маркировка связей «Сигнал – слот» в дизайнере Предварительный просмотр формы. Qt Designer позволяет просмотреть полученную форму. Для этого необходимо выбрать пункт меню FormPreview. В режиме предварительного просмотра форма выглядит и реагирует на действия пользователя так, как это будет происходить во время работы программы (см. рисунок 1.13).
- класса, на базе объекта которого строится окно приложения,
- класса, описание которого получается автоматически при обработке созданного Qt Designer файла формы компилятором UIC;
2) как композиция или агрегация тех же классов. Во втором случае объект класса, наследуемого от класса Qt, включает поле автоматически созданного класса или содержит указатель на него (см. рисунок 1.14). Рисунок 1.14 – Возможные варианты подключения автоматически созданного класса образа окна: а – множественное наследование; б – композиция; в – наполнение (агрегация) Вариант множественного наследования удобнее при написании программы, поскольку при обращении к полям и методам родительского класса не требуется дополнительно указывать имя поля (обычного или указателя), поэтому желательно использовать именно его. При использовании множественного наследования описание класса окна нашего приложения должно выглядеть так: #ifndef win_H #define win_H #include #include «ui_form.h» // заголовок сгенерированный UIC class Win : public QWidget, public Ui::win< Q_OBJECT public: Win( QWidget * parent = 0); >; #endif Класс win – класс, автоматически созданный при работе Qt Designer и описанный в файле ui_form.h, Ui – имя адресного пространства, объявленного Qt Designer. Одним из методов этого класса является метод setupUi, который обеспечивает изображение и заданную реакцию формы. Конструктор класса окна, описываемый в файле реализации Win.cpp, должен вызывать этот метод для построения окна: #include #include Win::Win(QWidget * parent):QWidget(parent) < setupUi(this); // конструирование формы >; После этого основной программе остается только создать объект-приложение и объект-окно, визуализировать форму и ее виджеты и запустить цикл обработки сообщений: #include #include «win.h» int main(int argc, char *argv[]) < QApplication app(argc, argv); Win * win= new Win(); win->show(); return app.exec(); // запуск цикла обработки сообщений > Компиляция-сборка программы в этом случае может осуществляться в командном режиме, как указано в разделе 1.3, или с помощью среды Microsoft Visual Studio, как предлагается в разделе 1.4. Интересно посмотреть автоматически созданное описание класса окна в файле ui_form.h: #ifndef UI_FORM_H // защита от повторной компиляции #define UI_FORM_H #include // подключение заголовков файлов Qt #include #include #include #include #include #include #include #include #include QT_BEGIN_NAMESPACE // метка начала пространства имен class Ui_win // описание базового класса для класса окна < public: QHBoxLayout *horizontalLayout; // горизонтальный компоновщик QVBoxLayout *verticalLayout; // вертикальный компоновщик QLabel *label; // метка QPushButton *pushButton; // кнопка void setupUi(QWidget *win) // метод конструирования формы < if (win->objectName().isEmpty()) win->setObjectName(QString::fromUtf8(«win»)); win->resize(254, 96); horizontalLayout = new QHBoxLayout(win); horizontalLayout->setObjectName(QString:: fromUtf8(«horizontalLayout»)); verticalLayout = new QVBoxLayout(); verticalLayout->setObjectName(QString:: fromUtf8(«verticalLayout»)); label = new QLabel(win); label->setObjectName(QString::fromUtf8(«label»)); verticalLayout->addWidget(label); pushButton = new QPushButton(win); pushButton->setObjectName(QString:: fromUtf8(«pushButton»)); verticalLayout->addWidget(pushButton); horizontalLayout->addLayout(verticalLayout); retranslateUi(win); QObject::connect(pushButton, SIGNAL(clicked()), win, SLOT(close())); QMetaObject::connectSlotsByName(win); > // setupUi void retranslateUi(QWidget *win) < win->setWindowTitle(QApplication::translate(«win», «Form», 0, QApplication::UnicodeUTF8)); label->setText(QApplication::translate(«win», «Hello!», 0, QApplication::UnicodeUTF8)); pushButton->setText(QApplication::translate(«win», «Close», 0, QApplication::UnicodeUTF8)); > // retranslateUi >; namespace Ui < class win: public Ui_win <>; > QT_END_NAMESPACE // метка конца пространства имен Ui #endif Qt Designer автоматически построил текст, близкий к тексту программы из раздела 1.1. Однако этот текст существенно длиннее и более сложно организован, что вызвано необходимостью предусмотреть в шаблоне различные варианты. Так, например, для организации смены языка интерфейса в процессе работы программы все строки, которые должны быть переведены, собраны в одном специальном методе retranslateUi(). Избыточность кода, генерируемого Qt Designer, является причиной того, что данный пакет обычно используют для быстрого создания прототипа интерфейса, а для конечной реализации интерфейсы создают вручную с использованием классовQt.
10.02.2015 16.87 Mб 27 1321388933_cifrovaya_obrabotka_izobrageniy.djvu
09.07.2019 114.29 Кб 1 18474.rtf
Ограничение
Для продолжения скачивания необходимо пройти капчу:
Источник: studfile.net