Лучший способ состоит в том, чтобы обеспечить электричеством Ваши события JavaScript, пользующиеся некоторой библиотекой JavaScript как jQuery или YUI, и поместить Ваш код во внешний .js-файл.
, Но если Вы хотите быстрое-и-грязное решение, это - Ваше встроенное решение HTML:
Обновленный : Добавленный требуемый материал окраски.
Оригинальный Windows API был разработан в период 1984-85 годов, более 25 лет назад. Венгерская нотация была в моде, поэтому нужно было указать тип переменной в объявлении. Например, в чистом C нет способа указать «дальний» указатель, что и указывает LP в LPCSTR, но в 1985 году было очень важно различать обычные указатели и дальние указатели. (Это значение отошло на второй план, когда 32-битные окна взяли верх в середине 90-х, но синтаксис сохранился ...)
Кроме того, C на самом деле не различает просто указатель на char и указатель на статическая строка. Таким образом, lpsz типы.
В конце концов, речь идет о более надежном и последовательном вводе параметров, чем допускал простой C в 1984 году. Что касается WinMain, то это ' s потому, что программа Windows существенно отличается от программы командной строки. Если вы посмотрите в библиотеку, вы, вероятно, найдете функцию main (), которая устанавливает параметры, а затем вызывает внешнюю функцию WinMain (то есть вашу).
Есть две основные причины:
API других ОС на основе графического интерфейса могут отличаться от Win32, потому что не существует единого решения, но проблема, которую они решают, та же самая.
Райманд Чен из Microsoft пишет в своем блоге :
Хотя функция WinMain задокументировано в Platform SDK, это не совсем часть платформы. Скорее WinMain - это обычный имя для точки входа, предоставленной пользователем в программу Windows.
Настоящая точка входа находится в C библиотека времени выполнения, которая инициализирует среда выполнения, запускает глобальные конструкторы и затем вызывает вашу функцию WinMain (или wWinMain, если вы предпочитаете запись Unicode точку).
Я бы сказал, что по большей части это вопрос стиля. Стандарты выросли из мира Unix, поэтому, например, библиотечные функции имеют короткие имена и не так много определений типов. Я предполагаю, что это отражает выбор разработчиков C и Unix. С другой стороны, в Windows есть LongFunctionNamesInMixedCase
и LOTSOFTYPEDEFS
, * PTYPEDEFSFORPOINTERSTOO
Некоторые из них также являются восприятием необходимости. Например, WinMain ()
имеет такие вещи, как nCmdShow
, потому что графические приложения будут вызывать ShowWindow ()
, и я полагаю, что они хотели передать аргумент этому к недавно запущенному процессу. Другой вопрос, действительно ли это необходимо .
И, конечно же, некоторые API делают разные вещи. В Windows большое внимание уделяется передаче сообщений и обработке сообщений для каждого потока. CreateFile ()
имеет множество флагов, которых нет в мире Unix, включая режимы совместного использования, которые определяют, что другой процесс может делать, пока у вас открыт файл.
Они действительно не «пошли таким другим путем», как вы выразились.
WinMain () - это просто точка входа, которую ищет ОС Windows. Концептуально он ничем не отличается от main ().
Что касается определений символов (LPCSTR, BOOL и т. Д.), Это частично сделано для простоты использования. Например, написать LPCSTR
короче, чем const char *
. Другой пример - определение типа BOOL
, которое не поддерживается языком C. Другая причина состоит в том, чтобы оградить разработчика от изменений в базовом оборудовании, например, от перехода с 16-битной на 32-битную архитектуру на 64-битную.
Ни в коем случае не следует считать этот ответ исчерпывающим. Это всего лишь пара вещей, которые я заметил при программировании с Win32 / MFC.
Программирование Windows API управляется событиями, тогда как до этого момента большая часть программирования на C была линейной. Таким образом, WinMain () - это ярлык для библиотек для написания с использованием функций ОС, в то время как main () является частью языка C.
Пока мы говорим об этом, C имеет несколько встроенных типов, и в то время , было несколько способов их обозначения. "Типы" окон (HWND, LPSTR, BOOL и т.д.) отражают типы данных, обычно используемые в программировании Windows, и пытаются указать программисту, какими будут типы данных.
Венгерская нотация - это немного неправильное использование исходных версий, поскольку во многих переменных содержится ненужное количество квалификаторов.