Библиотека windows.h
Приложение или библиотека C:\WINDOWS\system32\HID.DLL не является образом программы для Windows NT
Прошу помочь в решении следующего вопроса: У меня Windows XP. Во время работы компьютера.
Приложение или библиотека C:\Windows\system\cmicnfg.cpl не является образом прогграммы для Windows NT
Переустановил винду (Диск пошарпоный) При запуске винды выдаёт ошибку (вложение с низу) Не.
Добавлено через 12 секунд
какие команды?
Это: WinAPI, там собрано всё на все случаи жизни.
Добавлено через 6 минут
Пример команда:
Копирование файла
CopyFile(const char *fn, const char *nf, bool flag);
Добавлено через 2 минуты
Может кто-то, ещё прототипов подкинет.
Решение
windows.h является Windows-конкретный файл заголовков для языка C программирования, который содержит заявления для всех функций в Windows API, все общие макросы, которые используются программистами окон, и все типы данных, используемых различными функциями и подсистем. Он определяет большое количество окон конкретные функции, которые могут быть использованы в С. Win32 API могут быть добавлены в проект программирования C, включив заголовка файла и ссылки на соответствующие библиотеки. Для использования функции в XXXX. DLL, программа должна быть увязана с XXXX. Lib (или Lib XXXX. В MinGW). Некоторые заголовки не связаны с расширением. DLL, но при статической библиотеки (например, scrnsave.h scrnsave.lib потребности).
Есть несколько файлов ребенка заголовок, который автоматически входит в windows.h. Многие из этих файлов не может быть просто включен сами по себе, из-за зависимостей.
Русские Блоги
windows.h подробно
Макрос WINVER связан с версией Windows, то есть, когда переменная макроса принимает разные значения, она соответствует разным версиям Windows. Соответствующие инструкции в документации Platform SDK следующие:
Весь следующий контент используется для определения некоторых других файлов заголовков, которые необходимо включить, и, конечно, также включается другая информация.
_MSC_VER Этот макрос определяет версию компилятора, связанная информация выглядит следующим образом:
C Compiler version 6.0 600
C/C++ compiler version 7.0 700
Visual C++, Windows, version 1.0 800
Visual C++, 32-bit, version 1.0 800
Visual C++, Windows, version 2.0 900
Visual C++, 32-bit, version 2.x 900
Visual C++, 32-bit, version 4.0 1000
Visual C++, 32-bit, version 5.0 1100
Visual C++, 32-bit, version 6.0 1200
Этот макрос должен быть определен, #pragma once указывает компилятору включать этот файл заголовка не более одного раза в процессе компиляции.
Что интересно, так это следующий большой комментарий, в котором объясняется, что когда макрос _MSC_VER определен и его номер версии> = 1020, то перечисленные рядом флаги не Можно определить.
Этот раздел немного длинный, но поскольку он интегрирован, его неизбежно анализировать вместе.
Макрос RC_INVOKED, кажется, является основой этого абзаца, поэтому начните с него. RC (компилятор ресурсов) определяет этот макрос, позволяя выборочно компилировать различные части файла заголовка ресурса. Зачем нужна такая необходимость? Когда вы думаете, использовать ли компилятор C или компилятор RC для компиляции файлов заголовков ресурсов, вы должны столкнуться с этой проблемой. Поскольку оператор определения, поддерживаемый RC, является только подмножеством компилятора C, если вы выбираете компиляцию с RC, вы должны быть осторожны, чтобы не записывать файлы заголовков ресурсов с синтаксисом, который RC не поддерживает.
Макрос NO_WINRES фактически определен в файле заголовка winresrc.h, а содержимое файла winresrc.h действительно очень мало:
пошаговое руководство. создание традиционного Windows классического приложения (C++)
в этом пошаговом руководстве показано, как создать традиционное Windows классическое приложение в Visual Studio. в примере приложения, которое вы создадите, будет использоваться Windows API для вывода «Hello, Windows desktop!» в окне. Код, созданный в этом пошаговом руководстве, можно использовать в качестве шаблона для создания других классических приложений Windows.
Для краткости в тексте пропущены некоторые операторы кода. В разделе Построение кода в конце документа показан полный код.
Предварительные требования
Компьютер под управлением Microsoft Windows 7 или более поздних версий. рекомендуется Windows 10 или более поздней версии для лучшего удобства разработки.
Базовые значения об использовании интегрированной среды разработки Visual Studio. Если вы уже использовали классические приложения для Windows, вы, вероятно, справитесь. Общие сведения см. в обзоре возможностей интегрированной среды разработки Visual Studio.
Основные навыки владения языком C++. Не волнуйтесь, мы не будем делать ничего сложного.
создание проекта Windows классических приложений
чтобы создать первый проект Windows desktop, выполните следующие действия. в процессе работы вы вводите код рабочего Windows приложения. Чтобы ознакомиться с документацией по предпочтительной версии Visual Studio, используйте селектор Версия. Он находится в верхней части оглавления на этой странице.
создание проекта Windows desktop в Visual Studio
В главном меню выберите Файл Создать Проект, чтобы открыть диалоговое окно Создание проекта.
в верхней части диалогового окна задайте для параметра язык значение C++, задайте для параметра платформа значение Windowsи задайте для параметра Project тип значение рабочий стол.
Нажмите кнопку Создать, чтобы создать проект.
В диалоговом окне Добавление нового элемента выберите Файл C++ (.cpp). В поле имя введите имя файла, например хелловиндовсдесктоп. cpp. Выберите Добавить.
Теперь проект создан и исходный файл открыт в редакторе. Чтобы продолжить, перейдите к созданию кода.
создание проекта Windows desktop в Visual Studio 2017
В меню Файл выберите команду Создать, а затем пункт Проект.
в левой области диалогового окна создание Project разверните узел установленные Visual C++и выберите пункт Windows рабочий стол. в средней области выберите мастер рабочего стола Windows.
В поле имя введите имя проекта, например десктопапп. Нажмите кнопку ОК.
в диалоговом окне Windows рабочего стола Project в разделе тип приложениявыберите Windows приложение (.exe). В поле Дополнительные параметрывыберите Пустой проект. Убедитесь, что предварительно скомпилированный заголовок не выбран. Нажмите кнопку ОК, чтобы создать проект.
В диалоговом окне Добавление нового элемента выберите Файл C++ (.cpp). В поле имя введите имя файла, например хелловиндовсдесктоп. cpp. Выберите Добавить.
Теперь проект создан и исходный файл открыт в редакторе. Чтобы продолжить, перейдите к созданию кода.
создание проекта Windows desktop в Visual Studio 2015
В меню Файл выберите команду Создать, а затем пункт Проект.
в левой области диалогового окна создание Project разверните узел установленные шаблоны Visual C++, а затем выберите пункт Win32. В средней области выберите шаблон Проект Win32.
В поле имя введите имя проекта, например десктопапп. Нажмите кнопку ОК.
На странице Обзормастера приложений Win32нажмите кнопку Далее.
на странице Параметры приложений в разделе тип приложениявыберите Windows приложение. В разделе Дополнительные параметрыснимите флажок предкомпилированный заголовок, а затем выберите пустой проект. Чтобы создать проект, нажмите кнопку Готово.
В Обозреватель решенийщелкните правой кнопкой мыши проект десктопапп, выберите Добавить, а затем выберите новый элемент.
В диалоговом окне Добавление нового элемента выберите Файл C++ (.cpp). В поле имя введите имя файла, например хелловиндовсдесктоп. cpp. Выберите Добавить.
Теперь проект создан и исходный файл открыт в редакторе.
Создание кода
далее вы узнаете, как создать код для Windows классического приложения в Visual Studio.
Запуск классического приложения Windows
точно так же, как у каждого приложения C и C++ должна быть main функция в качестве начальной точки, каждое Windows классическое приложение должно иметь WinMain функцию. WinMain имеет следующий синтаксис:
Сведения о параметрах и возвращаемом значении этой функции см. в разделе WinMain Entry Point.
Дополнительные сведения см. в разделе Процедуры окна.
Добавление функциональных возможностей в функцию WinMain
Дополнительные сведения о полях приведенной выше структуры см. в разделе вндклассекс.
зарегистрируйте WNDCLASSEX Windows, чтобы он знал о вашем окне и способах отправки в него сообщений. Воспользуйтесь функцией RegisterClassEx и передайте структуру класса окна в качестве аргумента. Этот _T макрос используется, так как мы используем TCHAR тип.
на этом этапе окно было создано, но нам по-прежнему нужно сообщить Windows, чтобы сделать его видимым. Вот что делает этот код:
для обработки сообщений сначала нужно добавить цикл обработки сообщений для прослушивания сообщений, которые Windows отправляет. Когда приложение получает сообщение, этот цикл отправляет его в вашу WndProc функцию для обработки. Цикл обработки сообщений напоминает приведенный ниже код.
Дополнительные сведения о структурах и функциях, используемых в цикле обработки сообщений, см. в разделах, посвященных MSG, GetMessage, TranslateMessageи DispatchMessage.
На этом этапе функция WinMain должна напоминать приведенный ниже код.
Добавление функциональных возможностей в функцию WndProc
Одно важное сообщение для обработчика — WM_PAINT сообщение. Приложение получает сообщение, WM_PAINT когда часть его отображаемого окна необходимо обновить. Это событие может возникать, когда пользователь перемещает окно перед окном, а затем снова перемещает его. Приложение не знает, когда происходят эти события. только Windows знает, поэтому оно уведомляет ваше приложение с WM_PAINT сообщением. При первом отображении окна его все должно быть обновлено.
HDC в коде — это обработчик контекста устройства, который используется для рисования в клиентской области окна. Используйте BeginPaint функции и EndPaint для подготовки и завершения рисования в клиентской области. BeginPaint Возвращает маркер контекста устройства отображения, используемый для рисования в клиентской области. EndPaint завершает запрос на рисование и освобождает контекст устройства.
Сборка кода
Как обещано, вот полный код для рабочего приложения.
Сборка примера
Удалите код, введенный в хелловиндовсдесктоп. cpp в редакторе. Скопируйте этот пример кода и вставьте его в хелловиндовсдесктоп. cpp:
В меню Построение выберите Построить решение. Результаты компиляции должны появиться в окне вывод в Visual Studio.
Чтобы запустить приложение, нажмите клавишу F5. окно, содержащее текст «Hello, Windows desktop!», должно появиться в левом верхнем углу экрана.
Поздравляем! вы выполнили это пошаговое руководство и создали традиционное Windows классическое приложение.
Windows h библиотека c для чего
#ifdef _WIN32
# include
# ifdef small
/* windows.h define small to char */
# undef small
И что за _WIN32, кем и в каком месте он определяется?
Если кто прокомментирует, буду премного благодарен.
| От: | Tazman |
Дата: | 21.07.05 09:44 | |
Оценка: |
Windows.h нужен для того, что бы ты мог использовать в своей программе функционал, предоставляемый операционной системой (Windows 95, 98, NT, 2000, XP).
C_>#ifdef _WIN32
C_># include
C_># ifdef small
C_> /* windows.h define small to char */
C_># undef small
C_> И что за _WIN32, кем и в каком месте он определяется?
C_> Если кто прокомментирует, буду премного благодарен.
А макрос _WIN32 генерируется компилятором, и говорит о том какая версия операционной системы используется.
_WIN16 — 16-ти разрядная
_WIN32 — 32-х разрядная
и вообще макрос _WIN?? говорит о том что используются винды.
| От: | Chelovek_ |
Дата: | 21.07.05 10:02 | |
Оценка: |
Еще раз спасибо. А можно сказать компилятору (в настройках каких-нибудь), чтобы он этот макрос не генерировал? (чисто теоретически, на практике понятно, что он много кому может быть нужен).
| От: | jazzer | Skype: enerjazzer |
Дата: | 21.07.05 10:32 | ||
Оценка: |
имеется в виду явное использование. То, что его рантайм использует неявно, тебя не должно волновать.
C_> Еще раз спасибо. А можно сказать компилятору (в настройках каких-нибудь), чтобы он этот макрос не генерировал? (чисто теоретически, на практике понятно, что он много кому может быть нужен).
См. документацию к твоему компилятору.
| От: | EyeOfHell | eyeofhell.habr.ru |
Дата: | 21.07.05 17:04 | ||
Оценка: |
Там содержаться типы, выходящие за рамки стандарта C++ и использующиеся в Windows: HANDLE, HWND, UMSG итд.
Так же там содержаться определения части системных функций и структур — CreateWindowA() и прочие.
Если программы ТОЛЬКО считает — тоесть не требует от ползователя ввода и ничего никуда не выводит, например:
То для такой программы Windows.h включать не обязательно. А вот как только нужно вывести на экран диалог с помошью MessageBox() — сразу же придется. Бо в стандарте C++ никакого MessageBox() не предусмотрено
Windows h библиотека c для чего
КАК быстро освоить API?
В последнее время выходит великое множество литературы, посвящённой «интересным возможностям Windows», вроде «Windows глазами хаккера» или «Прикольные штучки для Windows», «Как напугать пользователя». Большинство исходных текстов в них написано именно на API.
Поскольку мы только начинаем изучение программирования для Windows, процедурный API-код подойдёт нам как нельзя лучше. Он поможет понять механизм программирования для Windows, даст нам базовые знания об этой операционной системе, её принципах и механизмах, подготовив в полной мере к изучению библиотек классов MFC и VCL. Изучив работу элементов управления, мы рассмотрим некоторые неочевидные на первый взгляд возможности Windows, заглянув за ту самую запретную черту, куда можно попасть только зная язык API.
КАК можно обойтись только windows.h?
Разработчики Windows в своё время явно погорячились, когда решили, что программист обойдётся одним единственным библиотечным файлом. Сначала было всё ничего, но он стал разрастаться и если бы вы его решили распечатать, вам пришлось бы сразу купить новый картридж для принтера и толстенную пачку бумаги. С каждой новой версией Windows число API функций всё прибывало, росло число структур, макросов и типов данных. На сегодняшний день windows.h включает в себя более 1000 одних только констант.
#define WM_QUIT 0x0012
А кроме того, прототипы ВСЕХ API-функций. Что было делать? Современный файл windows.h разделили на 3 составляющих по назначению: kernel, user и gdi. Теперь эти файлы носят такие названия:
В любом случае, к API-программе придётся подключать только windows.h. И это большой плюс. В программировании под DOS приходилось отдельно подключать библиотеку для работы со строками string.h, графическую библиотеку graphics.h, библиотеку ввода-вывода stdio.h. Windows.h «знает» не только все API-функции, но кроме того ещё и все функции языка СИ, которые мы использовали раньше. Многие библиотеки, которые в DOS актуальны, с началом программирования для Windows сразу отошли в мир иной это:: graphics.h, dir.h, stdio.h, conio.h, stdlib.h, process.h, dos.h. Не скоро теперь они встретятся нам на пути!
Файл windows.h существует до сих пор и пополняется новыми функциями и обновляется с каждой новой версией Visual Studio. При использовании библиотек классов MFC вы не будете его подключать, но только потому, что он уже подключён. В первых программах на API мы будем использовать именно его.