que - winapi c++ pdf
¿Qué tan relevante es la programación de Win32 para los profesionales modernos? (15)
Como gran fan de los libros de Charles Petzold Code y The Annotated Turing me encontré con su libro Programming Windows que enseña programación Win32 en C. Soy un estudiante de primer año de informática que aprendí C por primera vez, pero uso C # y .NET para programación de Windows ahora , entonces me preguntaba si Win32 todavía es relevante para los programas profesionales de Windows. ¿Valdría la pena para mí, como estudiante que desea programar aplicaciones de Windows, aprender la API de Win32 a la profundidad que cubre el libro?
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 inventar) de lo que harás.
Incluso si estuviera usando Win32 y no .NET, ¿realmente es necesario aprender la misma profundidad que el libro? Navegue a través de las secciones, sepa que si encuentra algún problema en el futuro, sabrá dónde buscarlo. Luego se detiene. Vaya en profundidad cuando lo necesite o tenga tiempo libre.
Algunas cosas no se pueden hacer sin ganar llamadas a la API, pero con cada versión de .net esas cosas se vuelven cada vez menos, así que no, no aprendería la API apta si yo fuera tú.
Creo que es importante aprender los conceptos básicos. Si aprendió lo suficiente para mostrar una ventana con algunos campos, algunos botones y un menú. Tal vez dibujar algo en una ventana separada. Te ayudaría a aprender los fundamentos de cómo funciona realmente Windows. Creo que comprender el ciclo de mensajes y la comprensión de que casi todo lo que ves es una ventana son cosas fundamentales que todos deberían saber. Mis ojos realmente se abrieron 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. Subclassing ventanas de Subclassing permiten acceder a funciones que no están expuestas a usted en elementos como .NET o VB Classic y le permiten mejorar la funcionalidad de la ventana.
Creo que ya se ha respondido, pero si haces un desarrollo de .NET 2.0 o cualquier cosa que se forme en .NET, seguramente te encontrarás con muchos problemas con la forma en que algunas partes del framework están envolviendo win32 y mfc y necesitarás profundizar en eso para lograr que las cosas funcionen según lo previsto.
Definitivamente aprende los conceptos básicos como menciona AlexDrenea. Mientras que .NET lo protege de una gran cantidad de llamadas API de Win32. Win32 API es tan enorme que seguramente se encontrará con situaciones en las que .NET no se ha adaptado para usted.
Una situación común de la vida real ordena las flechas en ListViewColumns
En mi opinión, no. Lo aprendí hace mucho tiempo, ¡así que no tendrías que hacerlo!
Creo que es genial que aprendieras C primero, y que siguiera escribiendo C programas de vez en cuando, pero no veo por qué la API win32 sería útil para profundizar. Honestamente, fue un gran desastre.
Es muy relevante si está escribiendo C # en Windows. No todas las características del 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 es necesario en otros momentos para problemas de enfoque de control.
Además, entender cómo funcionan Win32 y Windows le dará una mejor comprensión de varios aspectos de C # /. Net como:
- ¿Qué hace Control.Invoke () en realidad?
- ¿Cuál es la diferencia entre Control.BeginInvoke y Control.Invoke?
- Lo que realmente hace que los eventos de mi control se disparen, por ejemplo, OnClick, etc. y cómo puedo depurar eso.
Dicho esto, WPF cambia todo esto y si solo estás escribiendo el código .Net 3 / 3.5, entonces mi argumento pierde algo de su relevancia.
Esto se ha discutido muchas veces en Professional Win32 api Newsgroup (noticias: //comp.os.ms-windows.programmer.win32)
(por los mejores gurús y autores best-sellers (Petzold, Russinovich, etc.) en el mundo ...)
Estoy completamente de acuerdo con lo que Joel Spolsky escribe en uno de sus muchos articles geniales. Creo que es crucial conocer las capas inferiores de la máquina no solo para poder escribir código de calidad sino para poder resolver problemas que inevitablemente aparecerán.
Por lo tanto, SÍ, es importante saber al menos lo básico de la API de WIN32, tal vez no en profundidad, pero al menos saber que está ahí, en la base de todo lo que codificará.
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á conocerlas en detalle. Recomiendo leer algunos conceptos básicos (es decir, creación de ventanas, mensajes de ventanas, procedimientos de ventanas, tal vez algunos GDI, etc.) y usar MSDN para buscar el resto cuando lo necesite.
Según el comentario de Greg, hasta cierto punto depende del dominio. Hago mucha programación de Windows CE / mobile, donde .NET es demasiado raro 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 aprendiendo todo por adelantado, simplemente iría a lo básico y buscaría el resto cuando lo necesitara. La documentación y los ejemplos que existen son lo suficientemente buenos para este enfoque, al igual que la ayuda en línea disponible en comunidades como esta.
Si está tratando de resolver problemas de negocios, entonces hay mejores herramientas que C para programar sistemas Win32. Clarín. Delphi. Y otros no tengo dudas.
Pero supongo que para aprender cómo funcionan las cosas , estás en buena posición con C.
Todavía estoy ganando parte de mi dinero usándolo. Tenemos un C IDE que se basa en el WinAPI. Ahora tiene alrededor de 15 años y sigue funcionando ;-). La descarga completa es de alrededor de 5 MB por lo que no obtienes nada en el mundo .NET. Entonces para nosotros sigue siendo algo valioso ...
Realmente depende de los tipos de aplicaciones que desea desarrollar. Para la mayoría de los fines de estos días, C # y .NET son completamente adecuados. Sin embargo, hay ciertos tipos de aplicaciones que necesitan la menor cantidad posible de dependencias (se les vienen a la mente las extensiones de shell) que no son prácticas para hacer como aplicaciones .NET. Para aquellos que necesitaría Win32.
Como siempre, vale la pena tener al menos una comprensión básica de Win32, incluso si está utilizando .NET para la mayoría de su trabajo.