Оболочка API Windows для .Net?

Windows API


Итак, я знаю, что WinForms немного затрагивает Windows API, но, честно говоря, это ужасно. ОСОБЕННО с многослойными окнами и мерцанием. Поэтому мне было интересно, написал ли кто-нибудь частичную или полную оболочку для Windows API. Меня особенно интересует аспект многоуровневого окна, но на самом деле любая часть API - хорошее место для начала.

Обновление: я нашел пакет кода Windows API здесь: http://code.msdn.microsoft.com/WindowsAPICodePack, но кажется, что он не обертывает многоуровневую Windows? Правильно ли я предполагаю это?

Собственный API (Windows)


Я немного слышал о Native API, но я не совсем уверен, для чего он нужен? какие функции он предоставляет? было бы неплохо изучить?

Резюме (вопросы в двух словах)


  1. Does anyone know of an existing (partial or full) wrapper of the Windows API?
    • If the answer is no to question one, where would be a good resource to learn about it myself, and potentially write my own?
  2. Объяснение собственного API? Что оно делает? Могу ли я использовать его для улучшения приложений? Могу ли я вообще ИСПОЛЬЗОВАТЬ его?

Ответ на любой из них высоко ценится :) спасибо


person caesay    schedule 20.10.2010    source источник
comment
Что с минусом?   -  person caesay    schedule 21.10.2010
comment
Обратите внимание на опасность выполнения кода вне управляемой среды. Также отсутствие переносимости, после чего вы это делаете.   -  person Aren    schedule 21.10.2010
comment
@Арен: отмечено. @Ferruccio: Я играл с WPF несколько раз, просто у меня никогда не было ни времени, ни желания конвертировать в него все свои проекты.   -  person caesay    schedule 21.10.2010
comment
Не то чтобы я полностью поддерживаю Ферруччо, но вы можете использовать winforms/wpf в тандеме и медленно преобразовывать приложение 1 элемент управления/форму (окно) за раз.   -  person Aren    schedule 21.10.2010


Ответы (3)


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

Вам лучше перейти на WPF. Команда Windows вообще плохо обработала собственный элемент управления, дойдя до того, что удалила поддержку стиля (WS_EX_COMPOSITED), если включено аэростекло, что, учитывая способ, которым Windows управляет рисованием, фактически сделало невозможным рисование любым приложением. без мерцания, если он использует дочерние окна в качестве элементов управления.

WPF «рисует» элементы управления окнами, но не использует дискретные (собственные) дочерние окна для представления отдельных элементов управления. Это дает ему контроль над тем, когда и как визуализируется его поверхность окна.

person Chris Becke    schedule 21.10.2010

Вы можете начать с PInvoke.NET.

person Jordão    schedule 20.10.2010
comment
Я думаю, что этот широкий ответ - лучшее, что вы можете получить с таким широким вопросом. - person Dirk Vollmar; 21.10.2010

Windows API огромен. В нем тонна вещей. Windows Forms — это оболочка его частей. WPF является оболочкой его частей. Части библиотек базовых классов (например, System.IO.*) являются оболочками ее частей. Code Pack — это обертка специально для вещей, которые были новыми в Vista и Windows 7, а не в Windows Forms или WPF.

Вы смотрели в WPF? В сочетании с P/Invoke определенных функций API это может привести вас к тому, чего вы хотите.

person Kate Gregory    schedule 20.10.2010