To ja może coś dopowiem, ponad to co podał @olesio; Również odniosę się do Delphi/Lazarusa, jednak WinAPI jest jedno, uniwersalne i niezależne od języków programowania (chyba że od tych, które nie oferują importów);
morti napisał(a)
Na początek może, czy warto się uczyć WinApi w aktualnych czasach, czy lepiej dać sobie spokój i od razu się zabrać za jakiś framework?
Ręczne rzeźbienie w WinAPI całych projektów dziś nie ma większego sensu (w kontekście aplikacji okienkowych/gier); Zysk jest nieznaczny (rozmiar pliku wykonywalnego czy biblioteki DLL to akurat najmniejszy plus), natomiast czasu i wiedzy potrzeba krocie więcej; Korzystanie ze znanych od lat dobrodziejstw (dla Lazarusa i Delphi to odpowiednio LCL i VCL) to standard, zapewniający o wiele mniejszy próg wejścia, a także większą wygodę pracy (mnóstwo gotowych klas, komponentów, a także designer formularzy) i poważną oszczędność czasu;
Jednak tego typu wynalazki jak potężne biblioteki komponentów to tylko połowa sukcesu; Często istnieje konieczność komunikacji aplikacji z systemem i do tego celu właśnie nadaje się API systemu; Potrzeba użyć konkretnej funkcji z systemowej biblioteki, której wrapper nie istnieje w bibliotece standardowej/komponentów to sobie importujemy funkcję i używamy; Taki import często związany jest z wykorzystaniem konkretnych typów (np. specjalnych struktur danych, dedykowanych dla danej funkcji lub ich zbioru);
WinAPI przydaje się także do różnych modyfikacji okien; Sam korzystam z kilkunastu (a może i więcej) takich funkcji, np. do tworzenia i sprawdzania istnienia muteksów, pobierania ścieżek do systemowych katalogów, blokowania i odblokowywania przycisków na belkach tytułowych okien; Ich znajomość jest konieczna, aby móc idealnie dostosować okna i ich zawartość, czego nie można zrobić w inny sposób (bo wrapperów brak);
Natomiast aplikacje desktopowe to tylko jedna gałąź całego drzewa projektów, w których systemowe API jest przydatne/konieczne;
Kolejne moje pytanie, to czy znając WinApi można śmiało pisać aplikacje okienkowe w powiedzmy CodeBlocksie, bez dodatkowej instalacji wyżej wspomnianych frameworków?
Oczywiście że można - trzeba tylko sporo rzeczy najpierw się dowiedzieć; No i sporo kodu naklepać na początku pracy nad danym projektem, aby wyświetlić sam goły formularz; Minusem jest niska czytelność takiego kodu, co elegancko poprawiają nazwijmy to frameworki, opakowując wszystkie wywołania systemowych funkcji w wygodne klasy;
Tylko jak już wspomniałem..... czy to jest sensowne w aktualnych czasach, ponieważ znalazłem parę artykułów, w których WinApi jest traktowana jako prehistoria ;)
Z tym się niezgodzę - to bzdura;
Tworzenie całych projektów tylko i wyłącznie z użyciem podstawowych konstrukcji języka oraz funkcji WinAPI i równocześnie bez używania bibliotek komponentów to faktycznie prehistoria; Po to właśnie stworzone zostały te biblioteki, aby zwiększyć komfort pracy, poprawić czytelność kodu i zlikwidować konieczność topornego rzeźbienia kodu;
Fałszem jest jednak stwierdzenie, że znajomość WinAPI jest dziś kompletnie niepotrzebna i nieprzydatna; Druga rzecz to fakt, iż nadmiar wiedzy nie boli, a często ten nadmiar wiedzy potrafi uratować dupsko przed długotrwałym wertowaniem dokumentacji na MSDN lub szukaniem informacji lub zakładaniem wątków na forach.