Как добавить файл в программу

Обновлено: 07.07.2024

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

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

Содержание статьи:

Как быстро вызвать функцию "Открыть с помощью"
Как использовать функцию "Открыть с помощью"

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

Для этого в проводнике выбираем нужный файл и нажимаем на него правой кнопкой мыши. В открывшемся контекстном меню выбираем пункт "Открыть с помощью":

И уже в этом разделе можно выбрать приложение рекомендуемое самой системой либо же выбрать пункт "Выбрать другое приложение":

После этого откроется окошко, в котором можно будет указать нужную пользовательскую программу, которая установлена на данном компьютере. Если же опять ничего не пришлось по вкусу, то следует выбрать опцию "Еще приложения":

Затем спускаемся в конец списка и нажимаем на "Найти другое приложение на этом компьютере":

И вот теперь нам дана полная свобода. Открывается окно проводника, в котором можно указать путь до запускного файла абсолютно любой установленной на ПК программы:

Если хочется сохранить выбранную ассоциацию файлов навсегда, то нужно поставить галку напротив пункта "Всегда использовать это приложение для открытия. ":

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

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

Внедрил три текстовых файла в проект. Думал они все время будут в проекте, однако они ссылаются на файлы в папке debug, что не есть хорошо, так как если этих файлов нет на диске - то и при компиляции возникают ошибки.

введите сюда описание изображения


13.8k 12 12 золотых знаков 36 36 серебряных знаков 60 60 бронзовых знаков 155 2 2 золотых знака 2 2 серебряных знака 7 7 бронзовых знаков они ссылаются на файлы которые есть физически на компьютере. А мне нужно чтобы они были внедрены в сам проект.\ что показано на скриншоте и как это относится к вопросу? Как я понял, он хочет, что бы файлы были вшиты в программу и на стороне клиента не было в них нужны. @Grundy, а как ты ссылаешь на файле в коде? Мне казалось, что VS по умолчанию их в код зашивает.

Для добавления ресурсов в проект необходимо щелкнуть правой кнопкой мыши узел Свойства в проекте в Обозревателе решений, щелкнуть Открыть, а затем на странице Ресурсы в Конструкторе проектов нажать кнопку Добавить ресурс. Ресурсы можно добавить в проект в качестве связанных ресурсов (внешние файлы) или как внедренные ресурсы (внедренные непосредственно в файл RESX).

  • При добавлении связанного ресурса в файле RESX со сведениями о ресурсах проекта будет указан только относительный путь на файл ресурса на диске. Если в качестве связанных ресурсов добавить изображения, видео или другие сложные файлы, их можно будет изменять в редакторе по умолчанию, сопоставленном с соответствующим типом файла в конструкторе ресурсов.
  • В случае внедренных ресурсов, данные хранятся непосредственно в файле ресурсов проекта (RESX). Строки могут храниться только как внедренные ресурсы.

После добавления файлов в ресурсы, добавленные файлы помещаются в папку Resources, находящуюся в корне проекта.

Также можно задать действие при построении:

  • None — файл не включается в выходную группу проекта и не компилируется в процессе построения. Примером такого файла является текстовый файл документации, например файл Readme.
  • Compile — файл компилируется в выходные файлы построения. Эта настройка используется для файлов кода.
  • Content — файл не компилируется, но включается в выходную группу "Содержимое". Этот вариант используется по умолчанию для файлов HTM и других веб-файлов.
  • Embedded Resource — файл внедряется в основные выходные файлы построения проекта в виде DLL или исполняемого файла. Обычно это значение используется для файлов ресурсов.

Для задания свойства Действие при построении ( Build Action ) или свойства Копировать в выходной каталог( Copy to Output Directory ) необходимо зайти в свойства у файла ресурсов и изменить необходимое свойство.

Собственно говоря, Вас интересует свойство Действие при построении ( Build Action ) - которое необходимо указать под Ваши нужды.

По мере того, как программы становятся больше, в целях организации или повторного использования их обычно разделяют на несколько файлов. Одним из преимуществ работы с IDE является то, что они значительно упрощают работу с несколькими файлами. Вы уже знаете, как создавать и компилировать однофайловые проекты. Добавить новые файлы в существующие проекты очень просто.

Лучшая практика

Когда вы добавляете в проект новые файлы исходного кода, давайте им расширение .cpp .

Для пользователей Visual Studio

В Visual Studio кликните правой кнопкой мыши на папке Исходные файлы (Source Files) в окне Обозревателя решений (Solution Explorer) и выберите Добавить (Add) → Создать элемент… (New Item…).

Рисунок 1 Добавление нового файла в проект в Visual Studio

Рисунок 1 – Добавление нового файла в проект в Visual Studio

Убедитесь, что у вас выбран Файл C++ (.cpp). Дайте новому файлу имя, и он будет добавлен в ваш проект.

Рисунок 2 Создание нового файла в проекте в Visual Studio

Рисунок 2 – Создание нового файла в проекте в Visual Studio

Примечание. Если вы создаете новый файл из меню Файл (File), а не из своего проекта в обозревателе решений, новый файл не будет добавлен в ваш проект автоматически. Вам придется добавить его в проект вручную. Для этого кликните правой кнопкой мыши на папке Исходные файлы (Source Files) в окне Обозревателя решений (Solution Explorer) и выберите Добавить (Add) → Существующий элемент (Existing Item), а затем выберите свой файл.

Теперь, когда вы компилируете свою программу, вы должны увидеть, как компилятор перечисляет имя вашего файла при компиляции.

Для пользователей Code::Blocks

В Code::Blocks перейдите в меню File (Файл) и выберите New (Создать) → File… (Файл…).

Рисунок 3 Создание нового файла в Code::Blocks

Рисунок 3 – Создание нового файла в Code::Blocks

В диалоговом окне New from template (Создать из шаблона) выберите C/C++ source (Исходный файл C/C++) и нажмите Go (Перейти).

Рисунок 4 Создание нового исходного файла C/C++ в Code::Blocks

Рисунок 4 – Создание нового исходного файла C/C++ в Code::Blocks

На этом этапе вы можете увидеть или не увидеть приветствие в диалоговом окне мастера создания исходного файла C/C++. Если да, щелкните Next (Далее).

Рисунок 5 Диалоговое окно мастера создания исходного файла C/C++

Рисунок 5 – Диалоговое окно мастера создания исходного файла C/C++

На следующей странице мастера выберите C++ и нажмите Next (Далее).

Рисунок 6 Выбор языка при создании нового исходного файла в Code::Blocks

Рисунок 6 – Выбор языка при создании нового исходного файла в Code::Blocks

Теперь дайте новому файлу имя (не забудьте расширение .cpp ) и выберите все конфигурации сборки. Наконец, выберите Finish (Готово).

Рисунок 7 Указание имени файла и выбор конфигураций сборки

Рисунок 7 – Указание имени файла и выбор конфигураций сборки

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

Для пользователей GCC/G++

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

где main.cpp и add.cpp – это имена ваших исходных файлов, а main – имя выходного файла.

Пример с несколькими файлами

В уроке «2.6 – Предварительные объявления и определения» мы рассмотрели программу с одним исходным файлом, которая не компилируется:

Когда компилятор достигает вызова функции add в строке 5 в функции main , он не знает, что такое add , потому что мы определили add только в строке 9! Нашим решением было либо переупорядочить функции (поместив сначала add ), либо использовать для add предварительное объявление.

Теперь посмотрим на аналогичную программу из нескольких исходных файлов:

Ваш компилятор может решить сначала скомпилировать либо add.cpp , либо main.cpp . В любом случае main.cpp не скомпилируется, что приведет к той же ошибке компилятора, что и в предыдущем примере:

Причина точно такая же: когда компилятор достигает строки 5 файла main.cpp , он не знает, что такое идентификатор add .

Помните, что компилятор компилирует каждый файл отдельно. Он не знает о содержимом других исходных файлов и не запоминает что-либо, что он видел из ранее скомпилированных исходных файлов. Таким образом, даже если компилятор, возможно, видел определение функции add ранее (если он сначала скомпилировал add.cpp ), он этого не запомнил.

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

Наши варианты решения здесь такие же, как и раньше: поместить определение функции add перед функцией main или удовлетворить компилятор предварительным объявлением. В этом случае, поскольку функция add находится в другом файле, вариант изменения порядка определений не подходит.

Лучшее решение здесь – использовать предварительное объявление:

main.cpp (с предварительным объявлением):

add.cpp (остается прежним):

Теперь, когда компилятор компилирует main.cpp , он будет знать, что такое идентификатор add , и будет удовлетворен. Линкер соединит вызов функции add в main.cpp с определением функции add в add.cpp .

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

Попробуйте скомпилировать add.cpp и main.cpp с предварительным объявлением. Если вы получили ошибку линкера, убедитесь, что вы правильно добавили add.cpp в свой проект или строку компиляции.

Что-то пошло не так!

Есть много вещей, которые могут пойти не так, когда вы в первый раз попытаетесь работать с несколькими файлами. Если вы попробовали приведенный выше пример и столкнулись с ошибкой, проверьте следующее:

1. Если вы получаете ошибку компилятора о том, что add не определена в main , вы, вероятно, забыли предварительное объявление для функции add в main.cpp .

2а. … наиболее вероятная причина в том, что add.cpp неправильно добавлен в ваш проект. При компиляции вы должны увидеть в списке компиляции и main.cpp , и add.cpp . Если вы видите только main.cpp , значит add.cpp определенно не компилируется. Если вы используете Visual Studio или Code::Blocks, вы должны увидеть add.cpp в списке в обозревателе решений / на панели проекта в левой части IDE. Если его не видно, кликните на проекте правой кнопкой мыши и добавьте этот файл, а затем попробуйте скомпилировать снова. Если вы компилируете из командной строки, не забудьте включить main.cpp и add.cpp в свою команду компиляции.

2b. … возможно, вы добавили add.cpp не в тот проект.

2c. … возможно, что файл не компилируется или не линкуется. Проверьте свойства файла и убедитесь, что файл настроен для компиляции/линковки. В Code::Blocks компиляция и линковка – это отдельные флажки, которые следует установить. В Visual Studio есть параметр «исключить из сборки» (exclude from build), для которого следует установить значение «нет» или оставить пустым.

Резюме

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

Мы будем много работать с несколькими файлами, как только перейдем к объектно-ориентированному программированию, поэтому сейчас самое подходящее время, чтобы убедиться, что вы понимаете, как добавлять и компилировать проекты с несколькими файлами.

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

Кликом правой кнопкой мыши на пустом пространстве рабочего стола или открытой папки откроется контекстное меню, Пункт меню «Создать»​ предоставляет дополнительные функциональные возможности, предлагая вам различные действия. Контекстное меню Создать позволяет создавать новые документы, папки, ярлыки.


Но с течением времени, вы можете понять, что на самом деле вы не используете большинство пунктов контекстном меню Создать, и решите удалить некоторые пункты или добавить несколько записей которые необходимы для вашей работы. В этой статье мы рассмотрим, как редактировать, добавлять или удалять элементы из контекстного меню «Создать»​ В Windows 10/8/7, с помощью редактора реестра, это легко.

Удалить элементы из контекстного меню «Создать»​

Откройте редактор реестра и перейдите к следующему разделу и откройте его:

Найдите нужное расширение файла, который вы хотели бы удалить из контекстного меню «Создать»​. Если вы хотите удалить Документ Microsoft Word, вам придется найти раздел .docx и открыть его. После того как вы открыли его, вы увидите раздел ShellNew - который и нужно удалить. Это позволит удалить запись - Документ Microsoft Word, из контекстного меню «Создать»​.


Как добавить файл в контекстное меню «Создать»​ с помощью реестра.

Чтобы добавить новый элемент или тип файла, найдите в HKEY_CLASSES_ROOT Нужное вам расширение. Мы будем добавлять файл .psd для программы Photoshop.

Кликните правой кнопкой мыши на нем и выберите Создать> Раздел и назовите его ShellNew.


Теперь в правой панели выберите Создать → Строковой параметр, назовите его NullFile и установите значение равным 1 .



Все теперь если вы перейдете в контекстном меню в пункт «Создать»​. Вы сможете быстро создавать файлы с расширением .psd.

Читайте также: