Подтвердить что ты не робот

Насколько релевантно программирование Win32 для современных профессионалов?

Как большой поклонник книги Чарльза Петцольда "Кодекс" и "Аннотированный Тьюринг" я наткнулся на его книгу "Программирование Windows", которая преподает программирование Win32 на C. Я - студент-информатик, впервые научившийся C, но я использую С# и .NET для Программирование Windows теперь, поэтому мне было интересно, будет ли Win32 по-прежнему относиться к профессиональным программам Windows. Будет ли это для меня, как студента, который хочет запрограммировать приложения Windows, узнать интерфейс Win32 на глубину, на которую распространяется книга?

4b9b3361

Ответ 1

Это зависит от того, какие приложения вы хотите развивать. В большинстве случаев в наши дни С# и .NET вполне подходят. Тем не менее, есть определенные типы приложений, для которых требуется как можно меньше зависимостей (расширения оболочки), которые не являются практичными для приложений .NET. Для тех, кому понадобится Win32.

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

Ответ 2

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

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

Ответ 3

По-моему, нет. Я узнал это давно, так что вам не придется!

Я считаю, что очень хорошо, что вы сначала научились C, и я продолжал писать C-программы, но я не понимаю, почему API win32 был бы полезен для поиска. Честно говоря, это был большой беспорядок.

Ответ 4

Это очень актуально, если вы пишете С# в Windows. Не все функции Win32 были открыты через библиотеки .Net. Конкретным примером этого является метод сообщений WM_SETREDRAW, который я описываю здесь: WM_SETREDRAW. Это также необходимо в другое время для проблем с контрольным фокусом.

Кроме того, понимание того, как работа Win32 и Windows даст вам лучшее представление о различных аспектах С#/. Net, например:

  • Что делает Control.Invoke() на самом деле?
  • В чем разница между Control.BeginInvoke и Control.Invoke?
  • Что на самом деле приводит к срабатыванию моих контрольных событий, например. OnClick и т.д. И как я могу отладить это.

Тем не менее, WPF меняет все это, и если вы пишете только код .Net 3/3.5, то мой аргумент теряет свою значимость.

Ответ 5

Я думаю, что важно изучить основы. Если вы узнали достаточно, чтобы отобразить окно с некоторыми полями, некоторые кнопки и меню. Возможно, рисуем что-то в отдельном окне. Это поможет вам изучить основы того, как Windows действительно работает. Я считаю, что понимание цикла сообщений и осознание того, что почти все, что вы видите, является окном, - это фундаментальные вещи, которые каждый должен знать. Мои глаза были действительно открыты в первый раз, когда я понял, что кнопка - это собственное окно. Затем он помогает понять, что функции могут включаться и выключаться, отправляя эти сообщения Windows. Подклассификация позволяет вам получить доступ к функциям, не подверженным вам в таких вещах, как .NET или VB Classic, и позволит вам улучшить функциональность окна.

Ответ 6

Я действительно не думаю, что "изучение Win32 API" реалистично для всех. API (да, там более одного) огромны, и вам вряд ли когда-либо понадобится знать их все подробно. Я бы рекомендовал прочитать некоторые основы (т.е. Создание окна, обмен сообщениями с окнами, процедуры окна, возможно, некоторые GDI и т.д.) И использование MSDN для поиска остальной информации, когда вам это нужно.

Ответ 7

Определенно изучите основы, о которых говорит AlexDrenea. Пока .NET защищает вас от множества вызовов API Win32. Win32 API настолько огромен, что вы должны столкнуться с ситуациями, когда .NET не завербовал его для вас.

Обычная ситуация в реальной жизни сортировать стрелки на ListViewColumns

Ответ 8

Согласно комментарию Грега, он в какой-то степени зависит от домена. Я делаю много программ для Windows CE/mobile, где .NET слишком запутан для многих устройств, а другие среды, такие как MFC, не полностью реализованы. В этом контексте большая часть Win32 все еще очень актуальна.

Тем не менее, я бы не стал изучать все это заранее, я просто изучал основы и выкапывал остальное, как и когда мне это нужно. Документация и примеры там достаточно хороши для этого подхода, а также интерактивная справка, доступная из таких сообществ.

Ответ 9

Если вам не нужна какая-либо функциональность, которая отсутствует в .NET Framework (например, получение подробной информации о драйверах принтера), нет. Это примерно 99% (конечно, произвольное значение, которое я только что составил) того, что вы будете делать.

Даже если вы использовали Win32, а не .NET, действительно ли нужно изучать ту же глубину, что и книга? Просмотрите разделы, узнайте, что если вы столкнетесь с какой-либо проблемой в будущем, вы знаете, где ее искать. Тогда остановитесь. Пойдите в глубину, когда вам это нужно или у вас есть свободное время.

Ответ 10

Если вы пытаетесь решить проблемы с бизнесом, то там лучше инструменты, чем C для программирования Win32-систем. Clarion. Delphi. И другие я не сомневаюсь.

Но я думаю, для изучения того, как все работает, вы хорошо себя чувствуете с C.

Ответ 11

Я думаю, что на это уже был дан ответ, но если вы используете .NET 2.0 или что-то winforms в .NET, вы обязательно столкнетесь с множеством проблем с тем, как некоторые части фреймворка обертывают win32 и mfc, вам нужно вникнуть в это, чтобы на самом деле заставить работу работать по назначению.

Ответ 12

Я все еще зарабатываю часть своих денег, используя его. У нас есть C IDE, основанная на WinAPI. Это сейчас около 15 лет или около того, и все еще работает;-). Полная загрузка составляет около 5 МБ, потому что вы ничего не получаете в мире .NET. Так что для нас это еще ценная вещь....

Ответ 13

Некоторые вещи не могут быть выполнены без вызовов win api, но с каждой версией .net эти вещи становятся все меньше и меньше, поэтому я бы не узнал выигрыш api, если бы я, где вы..

Ответ 14

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

Кроме того, он может быть заключен в script языки, такие как Autoit с DllCall

Ответ 15

Это неоднократно обсуждалось в Professional Win32 api Newsgroup ( Новости://comp.os.ms-windows.programmer.win32)

(величайшие гуру и бестселлеры (Петцольд, Руссинович и др.) в мире...)