¿Qué tan relevante es la progtwigción de Win32 para los profesionales modernos?

Como gran fan de los libros Código de Charles Petzold y The Annotated Turing , encontré su libro Programming Windows, que enseña progtwigción Win32 en C. Soy un estudiante de primer año de informática que aprendió C primero, pero ahora uso C # y .NET para la progtwigción de Windows , así que me preguntaba si Win32 sigue siendo relevante para los progtwigs profesionales de Windows. ¿Valdría la pena para mí, como estudiante que desea progtwigr aplicaciones de Windows, aprender la API de Win32 a la profundidad que cubre el libro?

Realmente depende de los tipos de aplicaciones que quieras desarrollar. Para la mayoría de los propósitos en estos días, C # y .NET son completamente adecuados. Sin embargo, hay ciertos tipos de aplicaciones que necesitan la menor cantidad de dependencias posible (las extensiones de shell vienen a la mente) que no son prácticas para hacer como las aplicaciones .NET. Para aquellos que necesitarían Win32.

Como siempre, vale la pena tener al menos una comprensión básica de Win32 incluso si está utilizando .NET para la mayor parte de su trabajo.

Estoy completamente de acuerdo con lo que Joel Spolsky escribe en uno de sus muchos grandes artículos . Creo que es crucial conocer las capas inferiores de la máquina no solo para poder escribir código de calidad, sino también para resolver problemas que inevitablemente aparecerán.

Entonces, SÍ, es importante al menos conocer los conceptos básicos de WIN32 API, tal vez no en profundidad, pero al menos saber que está ahí, en la base de todo lo que codificarás.

Es muy relevante si está escribiendo C # en Windows. No todas las características de Win32 han sido expuestas a través de las bibliotecas .Net. Un ejemplo concreto de esto es la técnica de mensaje WM_SETREDRAW que describo aquí: WM_SETREDRAW . También se necesita en otros momentos para problemas de control de enfoque.

Además, comprender cómo funcionan Win32 y Windows le dará una mejor comprensión de varios aspectos de C # /. Net, tales como:

  • ¿Qué hace realmente Control.Invoke ()?
  • ¿Cuál es la diferencia entre Control.BeginInvoke y Control.Invoke?
  • Lo que realmente hace que se activen los eventos de mi control, por ejemplo, OnClick, etc. y cómo puedo depurar eso.

Dicho esto, WPF cambia todo esto y si solo estás escribiendo código .Net 3 / 3.5, mi argumento pierde algo de relevancia.

En mi opinión, no. Lo aprendí hace mucho tiempo, ¡así que no tendrías que hacerlo!

Creo que es genial que hayas aprendido C primero, y seguiría escribiendo progtwigs de C de vez en cuando, pero no veo por qué sería útil investigar la API win32. Honestamente, fue un gran lío.

Creo que es importante aprender lo básico. Si aprendió lo suficiente para mostrar una ventana con algunos campos, algunos botones y un menú. Tal vez dibujar algo en una ventana separada. Le ayudaría a aprender los fundamentos de cómo funciona realmente Windows. Creo que entender el bucle de mensajes y darse cuenta de que casi todo lo que ves es una ventana son cosas fundamentales que todos deberían saber. Mis ojos se abrieron realmente la primera vez que me di cuenta de que un botón era su propia ventana. Luego, le ayuda a comprender que las características de las cosas se pueden activar y desactivar enviando estos mensajes de Windows. Subclasificar ventanas le permite acceder a funciones que no están expuestas a usted en cosas como .NET o VB Classic y le permite mejorar la funcionalidad de la ventana.

Realmente no creo que “aprender Win32 API” sea realista para nadie. Las API (sí, hay más de una) son enormes, y casi nunca necesitarás conocerlas en detalle. Recomendaría leer algunos conceptos básicos (por ejemplo, creación de ventanas, mensajes de ventanas, procedimientos de ventanas, tal vez algo de GDI, etc.) y usar MSDN para buscar el rest cuando lo necesite.

Definitivamente aprende lo básico como lo menciona AlexDrenea. Mientras que .NET te protege de muchas llamadas API de Win32. Win32 API es tan enorme que está obligado a encontrarse en situaciones donde .NET no lo ha envuelto para usted.

Una situación común de la vida real ordena flechas en ListViewColumns

Según el comentario de Greg, es hasta cierto punto dependiente del dominio. Hago mucha progtwigción de Windows CE / mobile, donde .NET es demasiado tonto para muchos dispositivos y otros frameworks como MFC no están completamente implementados. En este contexto, gran parte de Win32 sigue siendo muy relevante.

Dicho esto, no iría aprendiéndolo todo por adelantado, simplemente repasaría los conceptos básicos y desenterraría el rest cuando lo necesitara. La documentación y los ejemplos disponibles son lo suficientemente buenos para este enfoque, al igual que la ayuda en línea disponible de comunidades como esta.

A menos que necesite alguna funcionalidad que no esté en .NET Framework (como obtener información detallada sobre los controladores de impresora), no. Eso es aproximadamente el 99% (por supuesto, un valor arbitrario que acabo de hacer) de lo que harás.

Incluso si estuvieras usando Win32 y no .NET, ¿es realmente necesario aprender la misma profundidad que el libro? Busque en las secciones, descubra que si encuentra algún problema en el futuro, sabe dónde buscarlo. Luego se detiene. Profundice cuando lo necesite o tenga el tiempo libre.

Si está tratando de resolver problemas de negocios, entonces hay mejores herramientas que C para progtwigr sistemas Win32. Clarín. Delphi. Y otros no tengo dudas.

Pero supongo que, para aprender cómo funcionan las cosas , eres bueno con C.

Creo que ya se ha respondido, pero si desarrolla el desarrollo de .NET 2.0 o algo similar en .NET, es probable que tenga muchos problemas con la forma en que algunas partes del marco están ajustando win32 y mfc, y deberá hacerlo. profundiza en eso para que las cosas funcionen como es debido.

Todavía estoy ganando parte de mi dinero usándolo. Tenemos un IDE C que se basa en el WinAPI. Ahora lleva alrededor de 15 años y sigue funcionando ;-). La descarga completa es de alrededor de 5 MB para que no obtengas nada en el mundo .NET. Así que para nosotros sigue siendo algo valioso …

Algunas cosas no se pueden hacer sin las llamadas win api, pero con cada versión de .net, esas cosas se vuelven cada vez menos, así que no, no aprendería el api win si yo estuviera donde …

Debe saber que existe, ya que la mayoría de las funciones nativas de un lenguaje administrado más “avanzado” terminan por llamarlas.

Además, se puede encapsular en lenguajes de script como Autoit con DllCall

Esto se ha discutido muchas veces en Professional Win32 api Newsgroup (noticias: //comp.os.ms-windows.programmer.win32)

(por los más grandes autores de gurús y best sellers (Petzold, Russinovich, etc.) en el mundo …)