Punkte ausgeben



  • Hallo,

    ich habe ein keines Anfängerproblem bei der Ausgabe von Punkten auf dem Bildschirm.
    Mein Problem:
    Habe eine parametisierte Funktion und will nun die x und y-Werte auf dem Bildschrim ausgeben lassen, wobei die Punkte noch nicht mal unbedingt verbunden sein müssen. Ich will aber eine Art Koordiantensystem haben.
    Leider komme ich aber mit Microsoft Visual C++ nur bis zur Generierung eines Hallo Welt fensters, wo ich noch nicht mal durchblicke wie man das Hallo Welt in den leeren Fenster bearbeiten kann:(
    Hoffe ihr könnt mir ein bisschen helfen, sei es durch einen Link zu ein guten Tutorial oder einer schönen Erklärung eurer seits.

    Vielen Dank für eure Hilfe
    MfG
    Stefan

    PS: Hatte das schonmal im C++ Teil gepostet, dort wurde ich dann hier hin verwiesen. Sry wegen Doppelpost



  • Hab inzwischen eine Seite gefunden wo einieges erklärt wird. Nun erhalte ich aber komische Fehlermeldungen und hoffe das ihr mir weiter helfen könntet:

    #include<windows.h>
    #include<cmath>
    
    LRESULT CALLBACK WndProc(HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam)
    {
    	HDC hdc;
    	PAINTSTRUCT ps;
    	int RADIUS=10,alpha;
    
    	switch(message)
    	{
    	case WM_PAINT:
    		hdc=BeginPaint(hwnd,&ps); //Gerätekontext
    
    		for(alpha=0;alpha<=360;alpha++)
    		{
    			SetPixel(hdc,100+int(RADIUS*sin(alpha)),100+int(RADIUS*cos(alpha)),RGB(255,0,0));
    		}
    
    		EndPaint(hwnd,&ps);
    		return 0;
    	case WM_DESTROY:
    		PostQuitMessage(0);
    		return 0;
    	}
    	return DefWindowProc(hwnd,message,wParam,lParam);
    }
    
    int WINAPI WinMain(HINSTANCE hI, HINSTANCE hPrI,PSTR szCmdLine,int iCmdShow)
    {
    	static TCHAR szName[]=TEXT("Fensterklasse");
    	HWND hwnd;
    	WNDCLASS wc;
    	wc.style			=CS_HREDRAW | CS_VREDRAW | CS_DBLCLKS;
    	wc.lpfnWndProc		=WndProc;
    	wc.cbClsExtra		=0;
    	wc.cbWndExtra		=0;
    	wc.hInstance		=hI;
    	wc.hIcon			=LoadIcon(NULL,IDI_WINLOGO);
    	wc.hCursor			=LoadCursor(NULL,IDC_ARROW);
    	wc.hbrBackground	=(HBRUSH)GetStockObject(WHITE_BRUSH);
    	wc.lpszMenuName		=NULL;
    	wc.lpszClassName	=szName;
    	RegisterClass(&wc);
    	hwnd=CreateWindow(szName,TEXT("Punkt setzen"),WS_OVERLAPPEDWINDOW,0,0,200,200,NULL,NULL,hI,NULL);
    	ShowWindow(hwnd,iCmdShow);
    	UpdateWindow(hwnd);
    	MSG msg;
    	while(GetMessage(&msg,NULL,0,0))
    	{
    		TranslateMessage(&msg);
    		DispatchMessage(&msg);
    	}
    	return msg.wParam;
    }
    

    folgende Fehlermeldungen bekomme ich:

    --------------------Konfiguration: main - Win32 Debug--------------------
    Linker-Vorgang läuft...
    LIBCD.lib(crt0.obj) : error LNK2001: Nichtaufgeloestes externes Symbol _main
    Debug/main.exe : fatal error LNK1120: 1 unaufgeloeste externe Verweise
    Fehler beim Ausführen von link.exe.
    
    main.exe - 2 Fehler, 0 Warnung(en)
    

    Wisst ihr was damit anzufangen?

    MfG
    Stefan



  • Dieser Thread wurde von Moderator/in Unix-Tom aus dem Forum MFC mit dem Visual C++ in das Forum WinAPI verschoben.

    Im Zweifelsfall bitte auch folgende Hinweise beachten:
    C/C++ Forum :: FAQ - Sonstiges :: Wohin mit meiner Frage?

    Dieses Posting wurde automatisch erzeugt.



  • Mach eine Windows- und keine Konsolenanwendung.



  • @Mod
    Werd ich das nächtse mal beachten, Danke

    @YASC
    Nachdem ich eine neue Windowsanwendung erstellte und den Code kopierte hat es wieder geklappt. Bin jetzt aber bei einen neuen Problem, ich finde sagen wir mal den Punkt P_1 und als nächstes P_2, dann will ich die beiden Punkte verbinden lassen und dann den P_2 mit P_3 verbinden usw.. Kann man dies mit
    MoveToEx und LinTo machen? Bei mir hat es irgend wie nicht wirklich geklappt?

    MfG
    Stefan



  • |-STORM-| schrieb:

    Kann man dies mit MoveToEx und LinTo machen? Bei mir hat es irgend wie nicht wirklich geklappt?

    Sollte aber 😉 - wie hast du es denn gemacht?



  • Hab es jetzt hinbekommen, hatte blos folgend Bedingung für den Radius:

    if(Radius%36=0) Radius=Radius-2
    

    änderte dies jetzt zu

    if(Radius>0.01)
    {
    Radius=Radius-(1/(360*alpha));
    }
    else
    {
    Radius=Radius+275;
    };
    

    um. Sieht jetzt ungefähr so aus:
    http://img126.echo.cx/img126/3195/bild15mw.gif
    Mein Problem war, dass die Linien zwar verbunden wurden, aber es bei bestimmtem Stellen sehr große "Sprünge" gab, was ich aber dann halt mit einer anderen Bestimmung vom Radius verbesserte.

    Aber jetzt klappt ja alles, hab auch schon ein Feigendiagramm erstellt *freu*, dass nächste wird eine Mandelbrotmenge oder eine Juliamenge.
    http://img202.echo.cx/img202/6476/bild18he.gif

    MfG
    Stefan



  • GDI+ kann übrigens auch geglättete Linien zeichnen 😉



  • geht das dann mit Polyline?



  • |-STORM-| schrieb:

    geht das dann mit Polyline?

    Den Zusammenhang zwischen Polyline und GDI+ verstehe ich irgendwie nicht so recht 🙄

    Also es gibt eben in GDI Polyline und bei GDI+ DrawPolygon 😉



  • ...und GDI+ hat noch DrawLines().
    Ich wollte darauf hinaus, das bei den GDI+ Funktionen Linien nicht so "pixelig" gezeichnet werden wie bei GDI... (jaja, ich mag GDI+ ;D)



  • Das mit DrawPolygon war ein Versehen, meinte eigentlich auch DrawLines - hatte mich in der Eile wohl irgendwie verlesen 🙄


Anmelden zum Antworten