Aceasta este o întrebare destul de largă, deoarece programele de programare GUI în Windows pot fi realizate în multe feluri.
Există două părți principale pentru dezvoltarea oricărei aplicații GUI: limbă și API / cadru . Având în vedere că sunteți interesat să învățați să construiți aplicații Windows GUI, limba nu este un punct de interes pentru dvs. Prin urmare, ar trebui să alegeți o limbă pe care o cunoașteți deja și să lucrați cu un cadru sau un API care poate fi valorificat de limba aleasă.
Dacă doriți să utilizați C, sunteți destul de limitat să vă ocupați de API-ul Win32, caz în care citiți Petzold sau Richter ar fi locuri excelente pentru a începe. API-ul Win32 poate fi destul de descurajant, dar merită efortul de a învăța (imho). Există o mulțime de tutoriale pe Win32 pe web, și există întotdeauna MSDN , cu o referință completă / ghid pentru Win32 API. Asigurați-vă că acoperiți nu numai API-ul, ci și alte domenii, cum ar fi resurse / dialoguri, deoarece acestea reprezintă blocuri pentru aplicația dvs. Win32.
Dacă doriți să utilizați C ++ aveți toate opțiunile pe care le aveți la utilizarea lui C plus câteva altele. Aș recomanda să mergeți direct cu API-ul Win32 și apoi să treceți la un cadru cunoscut, cum ar fi MFC, Qt, wxWindows sau GTK, astfel încât să puteți petrece mai puțin timp lucrați cu codul boilerplate și, în schimb, să vă concentrați pe scrierea logicii aplicației. Ultimele trei opțiuni pe care tocmai le-am enumerat au avantajul suplimentar de a fi cross-platform, deci nu trebuie să vă faceți griji prea multe despre problemele specifice platformei. Având în vedere că ați spus că doriți să lucrați cu Windows, vă presupun că sunteți dornici să vă concentrați mai degrabă pe această platformă decât pe platformă - așa că mergeți cu MFC, dar petreceți puțin timp cu API-ul Win32 pentru a vă familiariza cu unele dintre conceptele.
Când se ocupă de MFC și Win32 API, este o idee bună să încercați să obțineți o înțelegere solidă a terminologiei înainte de a scrie cod. De exemplu, trebuie să înțelegeți ce este pompa pentru mesaje și cum funcționează. Trebuie să știți despre concepte precum " controale elaborate de proprietar și < a href = "http://msdn.microsoft.com/en-us/library/ms997565.aspx" rel = "noreferrer"> subclasarea . Când înțelegeți aceste lucruri (și mai mult), veți găsi mai ușor să lucrați cu MFC deoarece utilizează terminologia similară în interfețele de clasă (de ex., Trebuie să știți ce înseamnă "traducerea mesajelor" înseamnă înainte de a înțelege cum și când utilizați PreTranslateMessage ).
De asemenea, ați putea folosi Gestionat C ++ pentru a scrie aplicații GUI .NET, dar am citit în câteva locuri că Gestionat C ++ nu a fost intenționat să fie folosit în acest mod. În schimb, acesta ar trebui să fie folosit ca o poartă între codul nativ / neangajat și codul gestionat. Dacă utilizați .NET este mai bine să utilizați o limbă .NET cum ar fi VB.NET sau C# pentru a vă construi GUI-urile.
Deci, dacă sunteți să folosiți .NET, aveți în prezent posibilitatea de a alege WinForms sau wpf . Personal, simt că veți pierde timpul învățând să construiți aplicații WinForms, dat fiind faptul că wpf este proiectat să o înlocuiască. În timp, wpf va deveni mai prevestitor și Winforms va pierde cel mai probabil. wpf are un set mult mai bogat API și nu suferă de multe dintre limitările pe care Winforms le face. Dacă alegeți acest traseu, cu siguranță veți fi nevoiți să învățați XAML , care este un limbaj de markup care conduce aplicații WPF. Această tehnologie se apropie de vârstă și există multe locuri excelente de învățat. În primul rând, există site-uri precum LearnWPF și DrWPF care au cateva articole foarte bune. În al doilea rând, există o mulțime de calitate cărți > pe subiect .
Deci, pentru a rezuma, odată ce ați ales limba și tehnologia, calea este de fapt destul de ușoară. Doar alegeți o carte sau două, citiți câteva bloguri, intrați în câteva mostre de cod .. și cel mai important ... scrieți cod. Păstrați scris, continuați să faceți greșeli și continuați să învățați de la ei.
Ca o notă finală ...
Cu alte cuvinte, Silverlight. Dacă nu doriți să mergeți pe ruta MS, s-ar putea să vă dați Adobe Flash / Flex o privire. Atât Silverlight, cât și Flash / Flex construiesc RIA-urile. Ceea ce cred că este locul în care ne îndreptăm. Aceste zile de aplicații Office sunt numărate
Nu sunt deloc de acord. Silverlight nu este același lucru cu WPF. Silverlight este specific pentru web și are doar un subset de caracteristici WPF. Dat fiind că întrebarea cere aplicații Windows GUI, aplicațiile Flash / Flex Rich Internet nu sunt într-adevăr o sugestie potrivită. De asemenea, nu sunt de acord că zilele de aplicații Rich Client (cum ar fi birourile) sunt numerotate deloc.
Sper ca te ajuta. Mult noroc :)