Zitat:
Zitat von kramido
[Ironie]Für einen absoluten Neuling ist es sicher einfacher, Dinge wie Objektorientierung, Vererbung, Delegates neben dem Tagesgeschäft wie beispielsweise Programmablaufsteuerung oder das Konzept von Variablen zu begreifen. Ein grundsätzliches Verständnis für die Prozesse, die in einem Programm vor sich gehen und die dahintersteckende Komplexität von einfachen Operationen in modernen Hochsprachen (z.B. Garbage Collection) ist sicher fehl am Platz.[/Ironie]
|
Ja das sind alles Sachen die das OOP ausmachen, aber für den Anfang muss man die nicht nutzen. Mann kann C# genauso sequenziell nutzen wie C. Aber schon mal versucht etwas grafisches mit c/c++ unter Windows mit der WinApi hinzubiegen.
Fenster unter C
Code:
#include <windows.h>
const char g_szClassName[] = "myWindowClass";
// Step 4: the Window Procedure
LRESULT CALLBACK WndProc(HWND hwnd, UINT msg, WPARAM wParam, LPARAM lParam)
{
switch(msg)
{
case WM_CLOSE:
DestroyWindow(hwnd);
break;
case WM_DESTROY:
PostQuitMessage(0);
break;
default:
return DefWindowProc(hwnd, msg, wParam, lParam);
}
return 0;
}
int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance,
LPSTR lpCmdLine, int nCmdShow)
{
WNDCLASSEX wc;
HWND hwnd;
MSG Msg;
//Step 1: Registering the Window Class
wc.cbSize = sizeof(WNDCLASSEX);
wc.style = 0;
wc.lpfnWndProc = WndProc;
wc.cbClsExtra = 0;
wc.cbWndExtra = 0;
wc.hInstance = hInstance;
wc.hIcon = LoadIcon(NULL, IDI_APPLICATION);
wc.hCursor = LoadCursor(NULL, IDC_ARROW);
wc.hbrBackground = (HBRUSH)(COLOR_WINDOW+1);
wc.lpszMenuName = NULL;
wc.lpszClassName = g_szClassName;
wc.hIconSm = LoadIcon(NULL, IDI_APPLICATION);
if(!RegisterClassEx(&wc))
{
MessageBox(NULL, "Window Registration Failed!", "Error!",
MB_ICONEXCLAMATION | MB_OK);
return 0;
}
// Step 2: Creating the Window
hwnd = CreateWindowEx(
WS_EX_CLIENTEDGE,
g_szClassName,
"The title of my window",
WS_OVERLAPPEDWINDOW,
CW_USEDEFAULT, CW_USEDEFAULT, 240, 120,
NULL, NULL, hInstance, NULL);
if(hwnd == NULL)
{
MessageBox(NULL, "Window Creation Failed!", "Error!",
MB_ICONEXCLAMATION | MB_OK);
return 0;
}
ShowWindow(hwnd, nCmdShow);
UpdateWindow(hwnd);
// Step 3: The Message Loop
while(GetMessage(&Msg, NULL, 0, 0) > 0)
{
TranslateMessage(&Msg);
DispatchMessage(&Msg);
}
return Msg.wParam;
}
Fenster mit C#
Code:
Form fenster = new Form();
Application.Run(fenster);
Man kann doch schon deutlich den Unterschied sehen. Mit C muss man sich einfach extrem viel Hintergrundwissen aufbauen bevor es mal richtig losgeht.