wieder einmal wrappen...("read" fehler ohne kompiliermeldungen)



  • ich bin doch aufm Stack (Window win)??



  • Blackhawk schrieb:

    ich bin doch aufm Stack (Window win)??

    so ja. aber in deinem obrigen bsp wolltest du einen pointer verwenden (der noch nicht allokiert worden war) und wenn du ihn erstellt hättest wäre das auf dem heap gewesen. deswegen die frage



  • Ich würde zu gern den jetzigen Code sehen, du auch miller_m?



  • MichaM. schrieb:

    Ich würde zu gern den jetzigen Code sehen, du auch miller_m?

    jep.
    wann reg'st du dich? bzw. warum nicht?



  • miller_m schrieb:

    wann reg'st du dich? bzw. warum nicht?

    Ich bin auch reg. (MiC++ha), aber ich habe Hausverbot 😃
    Quatsch, ich arbeite gerade an ein bestimmtes Projekt wo es um Cookies, Sessions, Sicherheit etc. geht. Ich müßte mich praktisch für jedes Posting einloggen, das wäre lästig.



  • MichaM. schrieb:

    ich arbeite gerade an ein bestimmtes Projekt wo es um Cookies, Sessions, Sicherheit etc. geht. Ich müßte mich praktisch für jedes Posting einloggen, das wäre lästig.

    stimmt wär mir auch zuwider.



  • am normalen code vom wrapper hat sich nichts geändert, nur beim aufruf. eben mit dem heap->stack. aber bitte.. 😃

    #include <windows.h>
    #include "wrapper.h"
    
    int WINAPI WinMain(HINSTANCE hInstance,HINSTANCE hPrevInstance,LPSTR szCmdLine,int iCmdShow)
    {
    	Window win;
    
    	win.szAppTitle="Ein Test :P";
    	win.Initialize(hInstance,iCmdShow);
    	return win.Loop();
    }
    

    wenn man das so wie es ist mit -mwindows und wrapper.cpp mitlinkt dann gehts.
    (ich hab jetzt die klasse & deklaration getrennt, wie sichs gehört^^)
    wolltet ihr den wrapper haben?

    hier mal die .h

    #include <windows.h>
    
    class Window
    {
      private:
    	HWND hWnd;
    	PAINTSTRUCT ps;
    	HDC hdc;
    	MSG msg;
      public:
    	LPCSTR szAppName;
    	LPCSTR szAppTitle;
    	Window();
    	~Window();
    	void Initialize(HINSTANCE hInstance,int iCmdShow);
    	int Loop();
    };
    


  • Blackhawk schrieb:

    wolltet ihr den wrapper haben?

    😃 😃 😃

    Willst du den haben:
    (Ich sagte ja ich mach mal ein Tut.)

    /******************************************************************/
    /**                                                              **/
    /**             WinAPI - Windows/Controls Wrapper Vorlage        **/
    /**             File: wrapper.h                                  **/
    /**             Designed für Blackhawk                           **/
    /**                                                              **/
    /******************************************************************/
    
    #ifndef WRAPPER_H
    #define WRAPPER_H
    
    #include <windows.h>
    
    /******************************************************************/
    /**         Alle Klassen etc. steht ein kleines 'w' vor.         **/
    /******************************************************************/
    
    /*:::::: Als erstes machen wir unsere Basis Klasse dem Compiler bekannt */
    class wBasisControl;
    
    /*:::::: Wir brauchen paar Konstanten um zu sehen welcher Controltype gefragt ist */
    const int wMasterWindow    = 1;
    const int wOwnerWindow     = 2;
    const int wChildWindow     = 3;
    const int wStandardControl = 4;
    
    /*:::::: Nun werden wir einige Typen definieren um Funktionszeiger zu speichern für die Events */
    typedef void (*wMouseEvent)(wBasisControl*, int, int, WPARAM);     /* void(Object,X,Y,Key_Flags) */
    typedef void (*wKeyEvent)  (wBasisControl*, int, LPARAM);          /* void(Object,Virtual_Key,Key_Data) */
    typedef void (*wEvent)     (wBasisControl*);                       /* void(Object) für Events ohne Parameter */
    typedef void (*wProcEvent) (wBasisControl*, UINT, LPARAM, WPARAM); /* für sonstige Events mit Parameter */
    
    /*:::::: DIE STATIC GLOBALE WndProc für alle Klassen, hier declardiert */
    static LRESULT CALLBACK wBasisWndProc (HWND, UINT, WPARAM, LPARAM);
    
    /*:::::: Um einen besseren Überblick zu erhalten, stecken wir die Getter und Setter Funktionen in Klassen */
    /*:::::: Die Getter Klasse "->Get->Funktion" */
    class wGetter {
    	private:
    		wBasisControl* obj;        /* hier einen Zeiger für die Controlklasse */
    	public:
    		wGetter(wBasisControl*);
    		~wGetter() {}
    		LPCSTR     Caption();
    		int 	   Width();
    		int 	   Height();
    		int 	   Top();
    		int        Left();
    		long 	   Style();
    		long 	   StyleEx();
    		/* weitere könnt ihr dann ergänzen, bzw. in abgeleiteten Klassen ergänzen für diverse Controls */
    };
    /*:::::: Nun folgt der entsp. Setter, auch diesen dann Ergänzen */
    class wSetter {
    	private:
    		wBasisControl* obj;     /* wieder der Zeiger zur Controlklasse */
    	public:
    		wSetter(wBasisControl*);
    		~wSetter() {}
    		void       Caption(LPCSTR);
    		void	   Width(int);
    		void	   Height(int);
    		void	   Top(int);
    		void	   Left(int);
    		void	   Style(long);
    		void	   StyleEx(long);
    };
    
    /*:::::: Jetzt gehts rund, es folgt die BasisKlasse: */
    class wBasisControl {
    	protected:
    		int 	   ClassType;
    		HWND   	   Handle;
    		HWND	   Parent;
    		HINSTANCE  HInstance;
    		long	   UserData;
    		WNDPROC    DefaultWndProc;
    		/* Hier wird sicher noch was folgen, wenn ihr es erweitert */
    	public:
    		wBasisControl();
    		wGetter*     Get;
    		wSetter*     Set;
    		HWND 	     GET_Handle();
    		HWND	     GET_Parent();
    		HINSTANCE    GET_Instance();
    		long	     GET_UserData();
    		void	     SET_UserData(long);
    		int          GET_ClassType();
    		WNDPROC      GET_DefaultWndProc();
    		virtual      ~wBasisControl();
    		wMouseEvent  OnMouseMove;
    		wMouseEvent  OnMouseDown;
    		wMouseEvent  OnMouseUp;
    		wMouseEvent  OnDoubleClick;
    		wKeyEvent    OnKeyDown;
    		wKeyEvent    OnKeyUp;
    		wProcEvent   OnMessage;
    		wEvent	     OnCreate;
    		/* Nah, hier werdet ihr sicherlich noch einiges rein pusten, aber dann auch Basisproc erweitern */
    };
    
    /*:::::: Soooo, nun kommt unser erstes Control, das Window ;-) */
    class wWindow : public wBasisControl {
    	private:
    		bool   isWindow;
    		/* somethink */
    	public:
    		HWND   FastWindowCreate(HINSTANCE, HWND, int, int, LPCSTR, int); /* Hinst.,ParentHandle, width, height, titel,classtype */
    		~wWindow();
    		/* Hier könnt ihr euch dann austoben */
    };
    
    class wButton : public wBasisControl {
    	private:
    		bool   isButton;
    	public:
    		HWND   InitButton(HWND, int, int, int, int, LPCSTR); /* Handle,left,top,width,height,Caption */
    		~wButton();
    }; 
    
    /****************************************************************************/
    /** So, nun könnt ihr euch austoben und fleisig Controls in Klassen packen **/
    /****************************************************************************/
    
    #endif
    

    Bin mit dem Tut. aber noch nicht fertig, muß ja auch noch was anderes machen
    die cpp datei dazu ist aber fertig und funktionstüchtig, muß nur noch alles Überarbeitet werden.



  • häkchen an automatisch einloggen ?!



  • DjFishbone schrieb:

    häkchen an automatisch einloggen ?!

    Was meinst du damit?



  • Ist das ein "Tutorial" dafür wie man schlechte Wrapper schreibt?



  • rofl. schrieb:

    Ist das ein "Tutorial" dafür wie man schlechte Wrapper schreibt?

    Ja, genau, gut eraten (erkannt ehr weniger)



  • MichaM. schrieb:

    rofl. schrieb:

    Ist das ein "Tutorial" dafür wie man schlechte Wrapper schreibt?

    Ja, genau, gut eraten (erkannt ehr weniger)

    War nicht schwer zu erkennen. 😉



  • dann gib mal deinen her...



  • hab ich gesagt das ich einen habe? 😉



  • eben.. also mach dus mal 👎



  • ok mach ich 👍


Anmelden zum Antworten