Wie relevant ist die entwicklung mit der WinAPI eigentlich noch?
-
Wenn man Windows verstehen will/muss, dann ist es von nöten sich von A-Z mit der WINAPI auszukennen.
-
-lowbyte- schrieb:
Wenn man Windows verstehen will/muss, dann ist es von nöten sich von A-Z mit der WINAPI auszukennen.
Das ist ja nur die obere Hälfte der Wahrheit

-
metapoint2011 schrieb:
wie relevant die pure Entwicklung mit der WinAPI eigentlich noch für entwickler ist?
Definiere "pur"
aber geht das meiste was man braucht nicht auch schon z.b mit visual c#?
Woher sollen wir wissen was du unter "was man braucht" verstehst?
und für was wird eigentlich noch die pure programmierung mit der WinAPI gebraucht oder benutzt?
Wieder: was heisst "pur"?
WinAPI wird an vielen Stellen verwendet. Was meinst du was z.B. das .NET Framework intern macht, wenn nicht WinAPI Funktionen aufrufen.
Auch viele Applikationen bei denen es auf Geschwindigkeit ankommt werden lieber direkt mit der WinAPI reden, als über diverse Wrapper zu gehen. Oder schreib mal einen Installer in C# oder mit MFC - wird der User keine Freude haben wenn er erstmal .NET bzw. die MSVC Runtime installieren muss, damit er deinen Installer verwenden kann.Eine GUI Applikation direkt mit WinAPI zu entwickeln, d.h. ohne jegliche Libraries wie MFC oder das .NET Framework, macht dagegen IMO weniger Sinn.
-
Interessant ist die Meinung von Charles Petzold in seinem Buch "Windows-Programmierung". Im ersten Teil, Kapitel 1, Unterkapitel "Programmiersprachen und -systeme":
Kurz und gut:
DenWeg zur Entwicklung von Windows-Programmen gibt es nicht, weshalb Sie sich zu gegebener Zeit wohl selbst entscheiden müssen. Die einzige Regel, die ich Ihnen an die Hand geben kann: Die Art der Anwendung sollte das dafür benötigte Werkzeug bestimmen - und nicht umgekehrt.Da stehen noch eins zwei Sachen mehr, empfehlenswert

-
Wenn man davon ausgeht, dass Windows 8 auch wieder ein neues native Framework haben wird (Jupiter), so ist WinAPI sehr relevant...
#include "stdafx.h" #include "SimpleTest.h" HINSTANCE hInst; WNDPROC PrevWindowProc = NULL; LRESULT CALLBACK WindowProc(HWND hwnd, UINT uiMsg, WPARAM wParam, LPARAM lParam); int APIENTRY _tWinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPTSTR lpCmdLine, int nCmdShow) { hInst = hInstance; // HWND hWnd = CreateWindow(_T("EDIT"), _T("SimpleTest"), WS_OVERLAPPEDWINDOW, CW_USEDEFAULT, CW_USEDEFAULT, CW_USEDEFAULT, CW_USEDEFAULT, NULL, NULL, hInstance, NULL); HMODULE twinapi = LoadLibrary(_T("TWINAPI.DLL")); if (twinapi == NULL) { MessageBox(NULL, _T("TWINAPI.DLL load error"), NULL, MB_OK); return FALSE; } typedef HWND (__stdcall CreateImmersiveWindowFunc)(DWORD, LPCTSTR, LPCTSTR, DWORD, DWORD, HINSTANCE, PVOID); CreateImmersiveWindowFunc* CreateImmersiveWindow = (CreateImmersiveWindowFunc*) GetProcAddress(twinapi, "CreateImmersiveWindow"); if (CreateImmersiveWindow == NULL) { MessageBox(NULL, _T("CreateImmersiveWindow function not found"), NULL, MB_OK); return FALSE; } HWND hWnd = CreateImmersiveWindow(0, _T("EDIT"), _T("SimpleTest"), 0x80000000 | ES_MULTILINE | ES_AUTOHSCROLL | ES_AUTOVSCROLL, 0, hInstance, NULL); if (!hWnd) { MessageBox(NULL, _T("CreateImmersiveWindow error"), NULL, MB_OK); return FALSE; } PrevWindowProc = (WNDPROC) GetWindowLongPtr(hWnd, GWL_WNDPROC); SetWindowLongPtr(hWnd, GWL_WNDPROC, (LONG_PTR) WindowProc); ShowWindow(hWnd, nCmdShow); UpdateWindow(hWnd); MSG msg = {}; while (GetMessage(&msg, NULL, 0, 0)) { TranslateMessage(&msg); DispatchMessage(&msg); } return (int) msg.wParam; } LRESULT CALLBACK WindowProc(HWND hwnd, UINT uiMsg, WPARAM wParam, LPARAM lParam) { switch (uiMsg) { case WM_DESTROY: PostQuitMessage(0); break; } return CallWindowProc(PrevWindowProc, hwnd, uiMsg, wParam, lParam); }
-
Jochen Kalmbach schrieb:
Wenn man davon ausgeht, dass Windows 8 auch wieder ein neues native Framework haben wird (Jupiter), so ist WinAPI sehr relevant...
Dies sehe ich genauso...
-
Windows API ist MS-Windows. Aber, ich würde nie die WinAPI direkt ansprechen, wenn es einen Wrapper gibt. Für die Fensterprogrammierung würde ich z.B. so was wie WTL oder MFC nutzen. Z.B. ist die WTL sehr kompakt und bietet wirklich viel Erleichterung für den Entwickler.
-
ja das denke ich auch und welche großen Projekte werden damit überhaupt noch entwickelt, ausser die von microsoft selbst, wie die ganzen Sachen für die Frameworks z.B..?
-
Was meinst Du mit große Anwendung?
-
ja das denke ich auch und welche großen Projekte werden damit überhaupt noch entwickelt, ausser die von microsoft selbst, wie die ganzen Sachen für die Frameworks z.B..?
Die heutige Jugend! Einfach zu faul!