Где находится exe visual studio 2019
В этой статье описываются некоторые параметры, которые можно настроить при создании приложений с помощью Visual Studio. Вы создадите настраиваемую конфигурацию сборки, скроете определенные предупреждения и расширите выходные данные сборки для примера приложения.
Установите пример приложения
Создание настраиваемой конфигурации сборки
При создании решения конфигурации отладочной сборки и сборки выпуска и их целевые платформы по умолчанию определяются для решения автоматически. Затем вы можете настроить эти конфигурации или создать собственные. Конфигурации указывают тип сборки. Целевые платформы указывают операционную систему, на которое ориентировано приложение для этой конфигурации. См. дополнительные сведения о конфигурациях сборки, платформах сборки и конфигурациях отладки и выпуска проекта.
Конфигурации и параметры платформы можно изменять или создавать с помощью диалогового окна Диспетчер конфигураций. В этой процедуре вы создадите конфигурацию сборки для тестирования.
Создание конфигурации сборки
Откройте диалоговое окно Диспетчер конфигураций.
В списке Активная конфигурация решения выберите .
В диалоговом окне Создание конфигурации решения введите для новой конфигурации имя Test , скопируйте параметры из существующей конфигурации Отладка и нажмите кнопку ОК.
В списке Активная платформа решения выберите .
В диалоговом окне Создание платформы решения выберите x64 и не копируйте параметры из платформы x86.
Активная конфигурация решения была изменена на Тест, а для активной платформы решения задано значение x64.
Активную конфигурацию решения можно быстро проверить или изменить с помощью списка Конфигурации решения на панели инструментов Стандартная.
создание приложения;
Далее вам предстоит создать решение с помощью настраиваемой конфигурации сборки.
Выполните сборку решения.
В строке меню последовательно выберите Сборка > Собрать решение (или нажмите CTRL+SHIFT+B).
Окно Вывод отображает результат сборки. Сборка успешно завершена.
Скрытие предупреждений компилятора
Далее мы добавим код, который приводит к созданию предупреждения компилятором.
В проекте Visual Basic откройте файл ExpenseReportPage.xaml.vb. В пользовательском конструкторе Public Sub New. добавьте следующий код: Dim i .
Окно Вывод отображает результат сборки. Сборка была выполнена успешно, но были созданы предупреждения:
Вы можете временно скрыть некоторые предупреждения во время сборки, чтобы они не засоряли выходные данные сборки.
В обозревателе решений выберите узел проекта верхнего уровня.
Открывается Конструктор проектов.
Выберите страницу Сборка и затем в поле Отключить предупреждения укажите номер предупреждения 0168.
Окно Вывод отображает только сводные данные о сборке.
Отключение всех предупреждений сборки в Visual Basic
В обозревателе решений выберите узел проекта верхнего уровня.
Открывается Конструктор проектов.
На странице Компиляция установите флажок Выключить все предупреждения.
Окно Вывод отображает только сводные данные о сборке.
Отображение дополнительных сведений о сборке в окне вывода
Вы можете изменить объем информации, отображаемый о процессе сборки в окне Вывод. В общем случае задан минимальный уровень детализации сборки, при котором в окне Вывод отображается только сводка по процессу сборки вместе с высокоприоритетными предупреждениями или ошибками. Чтобы отобразить дополнительные сведения о сборке, см. раздел Диалоговое окно "Параметры", "Проекты и решения", "Сборка и запуск".
При отображении дополнительных сведений сборка будет занимать больше времени.
Изменение объема сведений в окне вывода
Откройте диалоговое окно Параметры.
Выберите категорию Проекты и решения и затем страницу Сборка и запуск.
В строке меню выберите Сборка > Очистить решение.
Выполните сборку решения и просмотрите сведения в окне Вывод.
Сведения о сборке включают в себя время запуска сборки (находится в начале) и порядок обработки файлов. Они также включают фактический синтаксис компилятора, запускаемый Visual Studio при сборке.
В сборке Visual Basic параметр /nowarn не включает в себя определенные исключаемые предупреждения, поэтому предупреждения не отображаются.
В окне Вывод можно искать содержимое, отобразив диалоговое окно Найти нажатием клавиш CTRL+F.
Создание сборки выпуска
Вы можете создать версию примера приложения, оптимизированную для поставки. Для сборки выпуска вы указываете, что исполняемый файл копируется в общую сетевую папку перед запуском сборки.
Указание сборки выпуска для Visual Basic
Открывается Конструктор проектов.
Откройте вкладку Компиляция.
В списке Конфигурация выберите Выпуск.
В списке Платформа выберите x86.
В поле Выходной путь сборки укажите сетевой путь.
Например, так: \\myserver\builds .
Открывается Конструктор проектов.
Перейдите на страницу Сборка.
В списке Конфигурация выберите Выпуск.
В списке Платформа выберите x86.
В поле Путь для создаваемых файлов укажите сетевой путь.
Например, можно указать \\myserver\builds .
На стандартной панели инструментов выберите в качестве конфигураций решения Выпуск, а в качестве платформ решения — x86.
Исполняемый файл копируется в указанный сетевой путь. Путем к нему будет \\myserver\builds\\FileName.exe .
Приносим извинения. Запрошенное содержимое было удалено. Вы будете автоматически перенаправлены через 1 секунду.
Лучший отвечающий
Вопрос
Все перепробовал и пересобирать решение и проект, комплируется код исключительно в DLL.
Я так полагаю что студия думает будто я буду самолично эту библиотеку вызывать через командную строку чтобы ей воспользоваться или что.
Написал простенькую программу типа Hello World.
При компиляции получаю вот это
1>------ Перестроение всех файлов начато: проект: FirstProgramm, Конфигурация: Debug x64 ------
1>FirstProgramm -> C:\Users\Юлиан Дель-Кампо\source\repos\Hello world\bin\x64\Debug\netcoreapp2.1\FirstProgramm.dll
========== Перестроение всех проектов: успешно: 1, с ошибками: 0, пропущено: 0 ==========
Что делать, как получить ексешник?
Ответы
Да, " dotnet app.dll". Делать переход в каталог вроде не нужно, так как он прописывается в PATH.
"а люди, придумавшие такой способ старта приложения не думали каково будет конечному пользователю"
Обычно создается инсталлятор, который создает ярлык на рабочем столе или в системном меню. Пользователь просто нажимает на ярлык и не задумывается, какой именно тип файла запускается.
"раз в студии изначально отсутсвует компиляция в exe как таковая, значит либо мир с ума сходит либо я чего то не недопонимаю."
Прочитайте внимательно статью, ссылку на которую я дал. В .NET Core "компиляция" (точнее построение) - это процесс получения DLL, не привязанной к конкретной ОС. Получение исполняемых файлов, заточенных под конкретную ОС, это отдельный процесс, называемый публикацией. Он отделен от построения, так как на этапе отладки без разницы, что именно запускать; заточенные под конкретные ОС пакеты нужны только на этапе развертывания готового приложения.
Вроде это не сильно отличается от Java, где компилятор стандартно выдает кроссплатформенный JAR-файл, а для получения EXE нужны дополнительные действия?
Приносим извинения. Запрошенное содержимое было удалено. Вы будете автоматически перенаправлены через 1 секунду.
Лучший отвечающий
Вопрос
Не запускается программа Microsoft Visual Studio 2019, после попытки открыть программу вылазит окно Windows о закрытии программы. Поиск проблемы в Интернете не помогает так же как и отладка. Пытался от администратора - не получается.
Ответы
Но как такое может быть, я устанавливал Windows с диска который покупал в магазине. Такого просто не может быть что бы у меня было краденное ПО.
Как такое может быть - это уже вам виднее. Но что краденое - совершенно очевидно. Для начала OEM SLP версии в магазинах вообще не продаются, они только предустановлены на ПК крупных производителей. И ключ у вас краденый (пробейте его в поисковике). Что вы там за диск в магазине купили - я не знаю, но вы точно не купили лицензию на ОС.
Легальная покупка ОС отдельно от ПК будет исключительно в форме фигурной пластиковой коробки, в ней два диска (64 и 32 бита) с голограммами, уникальный ключ (не будет найден в интернете) наклеен на внутренней стороне коробки. Плюс чек/счет на сумму как полкомпьютера (поэтому то Ultimate никто не покупал - Pro делает все то же самое в полтора раза дешевле).
Как я сказал, ваша ситуация совершенно обычная - Ultimate всегда краденая, всегда ОЕМ SLP, всегда подмена файлов активации, точно как у вас. Может какой то левый диск вроде "1000 программ" тогда продавали, не знаю.
Вот пример, тоже не работает VS, тоже краденая Ultimate:
This posting is provided "AS IS" with no warranties, and confers no rights.
Проверьте логи ОС на наличие ошибок. Попробуйте полностью удалить VS и поставить заново.
- Помечено в качестве ответа Maksim Marinov Microsoft contingent staff, Moderator 8 января 2020 г. 15:35
Все ответы
Проверьте логи ОС на наличие ошибок. Попробуйте полностью удалить VS и поставить заново.
- Помечено в качестве ответа Maksim Marinov Microsoft contingent staff, Moderator 8 января 2020 г. 15:35
Вылазит такая ошибка..
Всё равно вылазит окно о "Прекращении работы программы . "
Вот текст когда нажимаешь на кнопку "показать подробности проблемы" -
Сигнатура проблемы:
Имя события проблемы: APPCRASH
Имя приложения: vs_setup_bootstrapper.exe
Версия приложения: 2.4.1111.43337
Отметка времени приложения: b37054ee
Имя модуля с ошибкой: KERNELBASE.dll
Версия модуля с ошибкой: 6.1.7601.19135
Отметка времени модуля с ошибкой: 56a1c9ac
Код исключения: c06d007e
Смещение исключения: 000000000000965d
Версия ОС: 6.1.7601.2.1.0.256.1
Код языка: 1049
Дополнительные сведения 1: 7283
Дополнительные сведения 2: 72836eb6216b49be15302fdb224c1b5d
Дополнительные сведения 3: be7c
Дополнительные сведения 4: be7c66ff8d6645e2a25fb76613fa50e4
Если заявление о конфиденциальности в Интернете недоступно, ознакомьтесь с его локальным вариантом:
C:\Windows\system32\ru-RU\erofflps.txt
Всё равно вылазит окно о "Прекращении работы программы . "
Вот текст когда нажимаешь на кнопку "показать подробности проблемы" -
Сигнатура проблемы:
Имя события проблемы: APPCRASH
Имя приложения: vs_setup_bootstrapper.exe
Версия приложения: 2.4.1111.43337
Отметка времени приложения: b37054ee
Имя модуля с ошибкой: KERNELBASE.dll
Версия модуля с ошибкой: 6.1.7601.19135
Отметка времени модуля с ошибкой: 56a1c9ac
Код исключения: c06d007e
Смещение исключения: 000000000000965d
Версия ОС: 6.1.7601.2.1.0.256.1
Код языка: 1049
Дополнительные сведения 1: 7283
Дополнительные сведения 2: 72836eb6216b49be15302fdb224c1b5d
Дополнительные сведения 3: be7c
Дополнительные сведения 4: be7c66ff8d6645e2a25fb76613fa50e4
Если заявление о конфиденциальности в Интернете недоступно, ознакомьтесь с его локальным вариантом:
C:\Windows\system32\ru-RU\erofflps.txt
Так же я ради эксперимента скачал программу Visual Studio Code, и с ней таких проблем нету. Очень жду вашего ответа. Спасибо!
Нету даже такой папки.
Это не так необходимо делать. Напишите "cd C:\Program Files (x86)\Microsoft Visual Studio\Installer\resources\app\layout\" и потом уже запустите InstallCleanup.exe. Или же найдите вручную папку в Program Files и дойдите до layout, где должен быть наличен InstallCleanup.exe.
Почему то нету этой папки.
У вас какая ОС? Укажите версию и редакцию. Так же, лицензия или краденая сборка?
Я спрашиваю потому что такие проблемы обычно наблюдаются на краденых пиратских сборках. Так что прежде чем решать проблему надо убедится что у вас подлинная копия ОС.
Для проверки запустите утилиту MGADIAG:
После завершения проверки нажмите кнопочку "Скопировать" и поместите содержимое буфера обмена в форму форума без каких либо изменений. Вся "секратная" информация уже скрыта.
This posting is provided "AS IS" with no warranties, and confers no rights.
Vista WgaER Data-->
ThreatID(s): N/A, hr = 0x80070002
Version: N/A, hr = 0x80070002
Windows XP Notifications Data-->
Cached Result: N/A, hr = 0x80070002
File Exists: No
Version: N/A, hr = 0x80070002
WgaTray.exe Signed By: N/A, hr = 0x80070002
WgaLogon.dll Signed By: N/A, hr = 0x80070002
OGA Notifications Data-->
Cached Result: N/A, hr = 0x80070002
Version: N/A, hr = 0x80070002
OGAExec.exe Signed By: N/A, hr = 0x80070002
OGAAddin.dll Signed By: N/A, hr = 0x80070002
Browser Data-->
Proxy settings: N/A
User Agent: Mozilla/4.0 (compatible; MSIE 8.0; Win32)
Default Browser: C:\Program Files (x86)\Google\Chrome\Application\chrome.exe
Download signed ActiveX controls: Prompt
Download unsigned ActiveX controls: Disabled
Run ActiveX controls and plug-ins: Allowed
Initialize and script ActiveX controls not marked as safe: Disabled
Allow scripting of Internet Explorer Webbrowser control: Disabled
Active scripting: Allowed
Script ActiveX controls marked as safe for scripting: Allowed
File Scan Data-->
File Mismatch: C:\Windows\system32\wat\watadminsvc.exe[Hr = 0x80070003]
File Mismatch: C:\Windows\system32\wat\npwatweb.dll[Hr = 0x80070003]
File Mismatch: C:\Windows\system32\wat\watux.exe[Hr = 0x80070003]
File Mismatch: C:\Windows\system32\wat\watweb.dll[Hr = 0x80070003]
Spsys.log Content: 0x80070002
Licensing Data-->
Версия службы лицензирования программного обеспечения: 6.1.7601.17514
Windows Activation Technologies-->
HrOffline: 0x00000000
HrOnline: N/A
HealthStatus: 0x0000000000000000
Event Time Stamp: N/A
ActiveX: Not Registered - 0x80040154
Admin Service: Not Registered - 0x80040154
HealthStatus Bitmask Output:
HWID Data-->
HWID Hash Current: LgAAAAEAAQABAAEAAAABAAAAAwABAAEA6GHc4aiILvK2LrC8tJxC1hQ2PEcucw==
OEM Activation 1.0 Data-->
N/A
OEM Activation 2.0 Data-->
BIOS valid for OA 2.0: yes
Windows marker version: 0x20001
OEMID and OEMTableID Consistent: yes
BIOS Information:
ACPI Table Name OEMID Value OEMTableID Value
APIC LENOVO CB-01
FACP LENOVO CB-01
HPET LENOVO CB-01
BOOT LENOVO CB-01
MCFG LENOVO CB-01
UEFI LENOVO CB-01
ASF! LENOVO CB-01
SLIC DELL PE_SC3
SSDT LENOVO CB-01
ASPT LENOVO CB-01
FPDT LENOVO CB-01
SSDT LENOVO CB-01
SSDT LENOVO CB-01
Vista WgaER Data-->
ThreatID(s): N/A, hr = 0x80070002
Version: N/A, hr = 0x80070002
Windows XP Notifications Data-->
Cached Result: N/A, hr = 0x80070002
File Exists: No
Version: N/A, hr = 0x80070002
WgaTray.exe Signed By: N/A, hr = 0x80070002
WgaLogon.dll Signed By: N/A, hr = 0x80070002
OGA Notifications Data-->
Cached Result: N/A, hr = 0x80070002
Version: N/A, hr = 0x80070002
OGAExec.exe Signed By: N/A, hr = 0x80070002
OGAAddin.dll Signed By: N/A, hr = 0x80070002
Browser Data-->
Proxy settings: N/A
User Agent: Mozilla/4.0 (compatible; MSIE 8.0; Win32)
Default Browser: C:\Program Files (x86)\Google\Chrome\Application\chrome.exe
Download signed ActiveX controls: Prompt
Download unsigned ActiveX controls: Disabled
Run ActiveX controls and plug-ins: Allowed
Initialize and script ActiveX controls not marked as safe: Disabled
Allow scripting of Internet Explorer Webbrowser control: Disabled
Active scripting: Allowed
Script ActiveX controls marked as safe for scripting: Allowed
File Scan Data-->
File Mismatch: C:\Windows\system32\wat\watadminsvc.exe[Hr = 0x80070003]
File Mismatch: C:\Windows\system32\wat\npwatweb.dll[Hr = 0x80070003]
File Mismatch: C:\Windows\system32\wat\watux.exe[Hr = 0x80070003]
File Mismatch: C:\Windows\system32\wat\watweb.dll[Hr = 0x80070003]
Spsys.log Content: 0x80070002
Licensing Data-->
Версия службы лицензирования программного обеспечения: 6.1.7601.17514
Windows Activation Technologies-->
HrOffline: 0x00000000
HrOnline: N/A
HealthStatus: 0x0000000000000000
Event Time Stamp: N/A
ActiveX: Not Registered - 0x80040154
Admin Service: Not Registered - 0x80040154
HealthStatus Bitmask Output:
HWID Data-->
HWID Hash Current: LgAAAAEAAQABAAEAAAABAAAAAwABAAEA6GHc4aiILvK2LrC8tJxC1hQ2PEcucw==
OEM Activation 1.0 Data-->
N/A
OEM Activation 2.0 Data-->
BIOS valid for OA 2.0: yes
Windows marker version: 0x20001
OEMID and OEMTableID Consistent: yes
BIOS Information:
ACPI Table Name OEMID Value OEMTableID Value
APIC LENOVO CB-01
FACP LENOVO CB-01
HPET LENOVO CB-01
BOOT LENOVO CB-01
MCFG LENOVO CB-01
UEFI LENOVO CB-01
ASF! LENOVO CB-01
SLIC DELL PE_SC3
SSDT LENOVO CB-01
ASPT LENOVO CB-01
FPDT LENOVO CB-01
SSDT LENOVO CB-01
SSDT LENOVO CB-01
Все как обычно: краденая Ultimate OEM SLP от Dell, файлы активации подменены.
File Scan Data-->
File Mismatch: C:\Windows\system32\wat\watadminsvc.exe[Hr = 0x80070003]
File Mismatch: C:\Windows\system32\wat\npwatweb.dll[Hr = 0x80070003]
File Mismatch: C:\Windows\system32\wat\watux.exe[Hr = 0x80070003]
File Mismatch: C:\Windows\system32\wat\watweb.dll[Hr = 0x80070003]
Еще не было случая чтоб Ultimate оказалась подлинной.
Если у вас реально Lenovo G580, то он поставлялся с Windows 7 или 8, скорее всего домашней. Можете попробовать восстановить лицензию.
А мы, увы, ничем помочь не можем, обсуждение краденого ПО запрещено.
This posting is provided "AS IS" with no warranties, and confers no rights.
To expand on what @auburg1 says, right-click on the project (in Solution Explorer) and choose Properties. The Output Type property is on the Application page. You likely have Class Library there. If you want to build (not export, build) an application, you need to have an appropriate Application type chosen. You may want to do some amount of starting over from scratch
2 Answers 2
Likely you have a library project as part of the solution and you are looking in the library's bin folder for the exe. It will not be there if that is the case. You will only find the dll in that bin folder.
1 - Right Click your project that youre expecting the output to be an EXE
2 - Click "Open Folder in File Explorer"
3 - you should see a bin folder here, navigate in and you'll find your Release and Debug folders.
Thanks, but as I explained I already did that but there were no .exe files. Luckily @stuartd had the solution, and thanks anyway!
Per the comments:
Terminology
The process of converting source code to a binary (exe, dll, etc) is called compiling or building the code, rather than exporting it.
Command Line
To build the code from the command line you can run dotnet publish:
By targeting the Windows platform (set by the -r / --runtime parameter) a program will become an executable. Other platforms don't use exe files; so a non runtime specific build would create a dll as that can be used on a variety of platforms.
CS Project File
- Open your project's .csproj file in an editor.
- Amend file's OutputType to WinExe (Windows Application) or Exe (Console Application).
IDE UI
You can update the CS Project File by editing it directly, or by navigating the to the relevant settings in your IDE. Assuming that's Visual Studio:
В этом пошаговом руководстве показано, как создать традиционное классическое приложение Windows в Visual Studio. В примере приложения, которое вы создадите, используется API Windows для отображения "Hello, Windows desktop!" в окне. Код, созданный в этом пошаговом руководстве, можно использовать в качестве шаблона для создания других классических приложений Windows.
Для краткости некоторые операторы кода опущены в тексте. В разделе "Сборка кода" в конце этого документа показан полный код.
Предварительные требования
Компьютер под управлением Microsoft Windows 7 или более поздних версий. Мы рекомендуем Windows 10 или более поздней версии для оптимальной разработки.
Копия Visual Studio. Сведения о скачивании и установке Visual Studio см. в этой статье. Когда вы запускаете установщик, убедитесь, что установлена рабочая нагрузка Разработка классических приложений на C++ . Не беспокойтесь, если вы не установили эту рабочую нагрузку при установке Visual Studio. Вы можете снова запустить установщик и установить ее сейчас.
Базовые значения об использовании интегрированной среды разработки Visual Studio. Если вы уже использовали классические приложения для Windows, вы, вероятно, справитесь. Общие сведения см. в обзоре возможностей интегрированной среды разработки Visual Studio.
Основные навыки владения языком C++. Не волнуйтесь, мы не будем делать ничего сложного.
Создание классического проекта Windows
Выполните следующие действия, чтобы создать свой первый Windows классический проект. По мере использования вы введете код для рабочего Windows классического приложения. Чтобы ознакомиться с документацией по предпочтительной версии Visual Studio, используйте селектор Версия. Он находится в верхней части оглавления на этой странице.
Создание классического проекта Windows в Visual Studio
В главном меню выберите Файл >Создать >Проект, чтобы открыть диалоговое окно Создание проекта.
В верхней части диалогового окна задайте языкC++, задайте для платформызначение Windows и задайте для Project тип "Рабочий стол".
В отфильтрованный список типов проектов выберите Windows мастер рабочего стола и нажмите кнопку "Далее". На следующей странице введите имя проекта, например DesktopApp.
В Обозреватель решений щелкните правой кнопкой мыши проект DesktopApp, выберите "Добавить" и выберите "Создать элемент".
В диалоговом окне Добавление нового элемента выберите Файл C++ (.cpp). В поле "Имя" введите имя файла, например HelloWindowsDesktop.cpp. Выберите Добавить.
Теперь проект создан, и исходный файл откроется в редакторе. Чтобы продолжить, перейдите к созданию кода.
Создание классического проекта Windows в Visual Studio 2017 г.
В меню Файл выберите команду Создать, а затем пункт Проект.
В диалоговом окне "Создать Project" в области слева разверните узел InstalledVisual>C++, а затем выберите Windows Desktop. В средней области выберите мастер Windows рабочего стола.
В Обозреватель решений щелкните правой кнопкой мыши проект DesktopApp, выберите "Добавить" и выберите "Создать элемент".
В диалоговом окне Добавление нового элемента выберите Файл C++ (.cpp). В поле "Имя" введите имя файла, например HelloWindowsDesktop.cpp. Выберите Добавить.
Теперь проект создан, и исходный файл откроется в редакторе. Чтобы продолжить, перейдите к созданию кода.
Создание классического проекта Windows в Visual Studio 2015 г.
В меню Файл выберите команду Создать, а затем пункт Проект.
В диалоговом окне "Создать Project" в области слева разверните узел InstalledTemplatesVisual> >C++, а затем выберите Win32. В средней области выберите шаблон Проект Win32.
На странице "Обзор " мастера приложений Win32 нажмите кнопку "Далее".
На странице "Приложение Параметры" в разделе "Тип приложения" выберите Windows приложение. В разделе "Дополнительные параметры" снимите флажок предварительно скомпилированного заголовка, а затем выберите " Пустой проект". Чтобы создать проект, нажмите кнопку Готово.
В Обозреватель решений щелкните правой кнопкой мыши проект DesktopApp, выберите "Добавить" и выберите "Создать элемент".
В диалоговом окне Добавление нового элемента выберите Файл C++ (.cpp). В поле "Имя" введите имя файла, например HelloWindowsDesktop.cpp. Выберите Добавить.
Теперь проект создан, и исходный файл откроется в редакторе.
Создание кода
Далее вы узнаете, как создать код для классического приложения Windows в Visual Studio.
Запуск классического приложения Windows
Так же, как каждое приложение C и приложение C++ должны иметь функцию в качестве отправной main точки, каждое Windows классическое приложение должно иметь WinMain функцию. WinMain имеет следующий синтаксис:
Сведения о параметрах и возвращаемых значениях этой функции см. в разделе "Точка входа WinMain".
Что такое все эти дополнительные слова, такие как WINAPI , или CALLBACK , или, или HINSTANCE , или _In_ ? Традиционный API Windows использует методы typedefs и макросы препроцессора для абстрагирования некоторых подробностей типов и кода для конкретной платформы, таких как соглашения о вызовах, __declspec объявления и прагмы компилятора. В Visual Studio можно использовать функцию быстрой информации IntelliSense, чтобы узнать, что определяют эти определения типов и макросов. Наведите указатель мыши на интересующее слово или нажмите клавиши CTRLK, CTRLI++ для небольшого всплывающего окна, содержащего определение. Дополнительные сведения см. в разделе Using IntelliSense. Параметры и типы возвращаемых значений часто используют заметки SAL для перехвата ошибок программирования. Дополнительные сведения см. в статье "Использование заметок SAL для уменьшения дефектов кода C/C++".
Windows требуются классические программы. TCHAR определяет макрос, который разрешается в конечном счете wchar_t , если символ ЮНИКОД определен в проекте, в противном случае он разрешается в char . Если вы всегда создаете сборку с поддержкой ЮНИКОДа, вам не требуется TCHAR и может использоваться напрямую wchar_t .
Наряду с функцией WinMain каждый Windows классическое приложение также должно иметь функцию window-procedure. Обычно эта функция называется WndProc , но ее можно присвоить любое имя. WndProc имеет следующий синтаксис:
Дополнительные сведения см. в разделе Процедуры окна.
Добавление функциональных возможностей в функцию WinMain
WinMain В функции вы заполняете структуру типа WNDCLASSEX. Структура содержит сведения о окне: значок приложения, цвет фона окна, имя, отображаемое в заголовке строки, помимо прочего. Важно отметить, что он содержит указатель функции на процедуру окна. В приведенном ниже примере показана типичная структура WNDCLASSEX .
Сведения о полях приведенной выше структуры см. в разделе WNDCLASSEX.
Теперь можно создать окно. Используйте функцию CreateWindowEx .
Эта функция возвращает HWND дескриптор окна. Дескриптор немного похож на указатель, который Windows используется для отслеживания открытых окон. Дополнительные сведения см. в разделе Типы данных Windows.
На этом этапе окно было создано, но нам все равно нужно сообщить Windows, чтобы сделать его видимым. Вот что делает этот код:
На этом этапе функция WinMain должна напоминать приведенный ниже код.
Добавление функциональных возможностей в функцию WndProc
HDC в коде — это дескриптор контекста устройства, который используется для рисования в клиентской области окна. Используйте функции для EndPaint подготовки BeginPaint и завершения рисования в клиентской области. BeginPaint возвращает дескриптор контексту устройства отображения, используемому для рисования в клиентской области; EndPaint завершает запрос на рисование и освобождает контекст устройства.
Сборка кода
Как и было обещано, ниже приведен полный код для рабочего приложения.
Сборка примера
Удалите любой код, введенный в HelloWindowsDesktop.cpp в редакторе. Скопируйте этот пример кода и вставьте его в HelloWindowsDesktop.cpp:
В меню Построение выберите Построить решение. Результаты компиляции должны отображаться в окне вывода в Visual Studio.
Чтобы запустить приложение, нажмите клавишу F5. Окно, содержащее текст "Hello, Windows desktop!", должно появиться в левом верхнем углу экрана.
Поздравляем! Вы выполнили это пошаговое руководство и создали традиционное классическое приложение Windows.
Читайте также: