ďťż

Ładny brzuch

Czy jeżeli umiem programować na konsolę, to programowanie okienkowych aplikacji będzie banałem? Czym się różnią kody od aplikacji okienkowych od tych na konsolę.




Czy jeżeli umiem programować na konsolę, to programowanie okienkowych aplikacji będzie banałem? Czym się różnią kody od aplikacji okienkowych od tych na konsolę.

Musisz nauczyć się jakiegoś API. Przypuszczam, że chodzi ci o WinApi. Muisz nauczyć się funkcji i odpowiedniej konstrukncji programu (rejestracja okno, jego właściwości, petle komunikatów. itd). Zobacz sobie po prostu do jakiegoś kusu jak to wygląda np. http://www.winapi.org/
A tu masz przykład jak stworzyć puste okno w WinApi:
//Całkowicie puste okno #include <string> #define WIN32_LEAN_AND_MEAN #include <windows.h> // nazwa klasy okna std::string g_strKlasaOkna = "od0dogk_Window"; //------------------- procedura zdarzeniowa okna------------------------ LRESULT CALLBACK WindowEventProc(HWND hWindow, UINT uMsg, WPARAM wParam, LPARAM lParam) { switch (uMsg) { case WM_DESTROY: // kończymy program PostQuitMessage (0); return 0; } return DefWindowProc(hWindow, uMsg, wParam, lParam); } //----------------------- funkcja WinMain()---------------------------- int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE, LPSTR, int nCmdShow) { /* rejestrujemy klasę okna */ WNDCLASSEX KlasaOkna; // wypełniamy strukturę WNDCLASSEX ZeroMemory (&KlasaOkna, sizeof(WNDCLASSEX)); KlasaOkna.cbSize = sizeof(WNDCLASSEX); KlasaOkna.hInstance = hInstance; KlasaOkna.lpfnWndProc = WindowEventProc; KlasaOkna.lpszClassName = g_strKlasaOkna.c_str(); KlasaOkna.hCursor = LoadCursor(NULL, IDC_ARROW); KlasaOkna.hIcon = LoadIcon(NULL, IDI_APPLICATION); KlasaOkna.hbrBackground = (HBRUSH) COLOR_WINDOW; // rejestrujemy klasę okna RegisterClassEx (&KlasaOkna); /* tworzymy okno */ // tworzymy okno funkcją CreateWindowEx HWND hOkno; hOkno = CreateWindowEx(NULL, // rozszerzony styl g_strKlasaOkna.c_str(), // klasa okna "Pierwsze okno", // tekst na p. tytułu WS_OVERLAPPEDWINDOW, // styl okna CW_USEDEFAULT, // współrzędna X CW_USEDEFAULT, // współrzędna Y CW_USEDEFAULT, // szerokość CW_USEDEFAULT, // wysokość NULL, // okno nadrzędne NULL, // menu hInstance, // instancjs aplikacji NULL); // dodatkowe dane // pokazujemy nasze okno ShowWindow (hOkno, nCmdShow); /* pętla komunikatów */ MSG msgKomunikat; while (GetMessage(&msgKomunikat, NULL, 0, 0)) { TranslateMessage (&msgKomunikat); DispatchMessage (&msgKomunikat); } // zwracamy kod wyjścia return static_cast<int>(msgKomunikat.wParam); }
ps. kod z Megatutoriala Xiona o ile mnie pamięć nie myli.
Użytkownik reVis edytował ten post 17 styczeń 2006, 16:31
Nie straszcie chłopaka, bo się zniechęci. Przecież pisze, że pod warunkiem, że umie programować na konsolę. A to oznacza, że już będzie znał tajniki programowania obiektowego. Wtedy ma do dyspozycji biblioteki, które elegancko opakowują funkcje winApi i ułatwiają oprogramowanie. No i jeszcze trzeba wspomnieć o narzędziach RAD, które znacznie przyspieszają pisanie kodu B) . WinApi się przydaje, ale żeby zaraz rejestrować w nim klasę okna... To można w ogóle zacząć od asemblera i pisaćsystem operacyjny.



No to dobra... Jeżeli będziesz znał dobrze język c++ to bez problemu powinieneś (podkreślam, że tylko powinieneś) nauczyć się WinApi.


Nie straszcie chłopaka, bo się zniechęci. Przecież pisze, że pod warunkiem, że umie programować na konsolę. A to oznacza, że już będzie znał tajniki programowania obiektowego. Wtedy ma do dyspozycji biblioteki, które elegancko opakowują funkcje winApi i ułatwiają oprogramowanie. No i jeszcze trzeba wspomnieć o narzędziach RAD, które znacznie przyspieszają pisanie kodu  B)  . WinApi się przydaje, ale żeby zaraz rejestrować w nim klasę okna... To można w ogóle zacząć od asemblera i pisaćsystem operacyjny.

I co ja mam powiedzieć? Zgodzić się, czy się nie zgodzić z Temporalem? To prawda, że WinApi to podstawa programowania pod Window$ i wypada je znać. Patrzę na tematy postów na tym forum i widzę, że w przeważającej części dotyczą Delphi i BCB, potem różnych innych rzeczy, a żadko WinApi. Być może forumowicze już znają je na tyle dobrze, że mogą z czystym sumieniem korzystać z narzędzi RAD. Ale tak na prawdę w to nie wierzę. Nie wyważa się otawrtych drzwi. Prawda jest taka, że pisząc komercyjnie programy nie ma innej możliwości, niż używanie rad, bo jest to szybsze, a tym samym tańsze, a to jest bardzo istotny element. Ja osobiście nie używam WinApi tam, gdzie nie muszę tego robić i można prościej. Jednak do niektórych rzeczy jestem zmuszony odpalić MSDN i znaleźć sobie odpowiednie struktury i funkcje. (Alternatywą byłoby poszukanie odpowiednich bibliotek komercyjnych wyspecjalizowanych do konkretnych celów.) Takie jest jest moje stanowisko i tak to widzę. Nie każdy musi się ze mną zgadzać i to chyba dobrze, że możemy wymienić poglądy. :)

Ja bym prponował jednak zgodzić się z Temporalem :). Jakby niepatrzeć wielu młodych (przyszłych) programistów (pasjonatów... już nie wiem jak to nazwać) ropoczyna swoją przygodę od Delphi. Czemu, bo kliknę parę razy i będzie ładny i kolorowy program. A nie o to w tym wszystkim chodzi. Tak samo jak Delphi, BCB (tu się zgadzam z chodnikem) nie zostało stworzone dla amatorów, tylko dla osób które czerpią z programowania zyski i zależy im na czasie.
ps. nadszedł chyba czas zamknąć temat :) w końcu wszystko już wyjaśnione

nie do konca sie z wami zgadzam. jasne, zeby doglebnie poznac dzialanie systemu operacyjnego, czy byc profesjonalnym programista, powinno sie poznac winapi. ale pisanie tylu linijek kodu tylko po to, zeby wyswietlic okno hello world moze naprawde zniechecic. mi sie wlasnie wydaje ze lepiej zaczac od rada, nauczyc sie robic jakies sensowne programy, a dopiero pozniej wchodzic glebiej. poza tym w ten sposob tez wiele sie uczy, bo bez uzycia api w takim delphi mozna napisac wiele interesujacych progsow, niekoniecznie tylko takich ktore co najwyzej zmieniaja parametry gotowych obiektow z bibliotek delphi. ja nie jestem tez jakim profesjonalista, ale troche sie juz nauczylem, api tez sie troszke bawilem ale uznalem ze uzywac go od podstaw to jednak strata czasu dla programow o takim stopniu zaawansowania jakie ja tworze.

a czym sie rozni rad od winapi?

i jezeli chcialbym pisac pod linuxem, to do programowania okienkowego sa inne biblioteki niz winapi(nie iwem cyz to dobrze nazwalem)

Jeśli chodzi o WindowsAPI, to http://regedit.neost...utorial/3_1.pdf ;)


a czym sie rozni rad od winapi?

i jezeli chcialbym pisac pod linuxem, to do programowania okienkowego sa inne biblioteki niz winapi(nie iwem cyz to dobrze nazwalem)

  • zanotowane.pl
  • doc.pisz.pl
  • pdf.pisz.pl
  • zsf.htw.pl
  •