SendMessage; Errorcode 5 : Access_Denied



  • Hallo lippoliv,
    glaubst Du, uns macht es Spaß, Dir jedesmal mit primitiven Anweisungen zu helfen?
    Um am Beispiel von Martin Richter zu bleiben (schwimmen über den Atlantik): Kein normaler Mensch rudert neben Dir mit, nur um Dir zu sagen, guck da vorne ist eine Insel (oder ein Eisberg, oder ... ), Du mußt rechts vorbei schwimmen! 😡

    Also Du solltest Dich ändern (oder Dein Chef)... besorg Dir einen Debugger, oder ein vernünftiges Entwicklungssystem.
    Damit schonst Du Deine und UNSERE Nerven!

    Dann würden viele solch banaler Fragen, die Du hier ins Forum stellst, gar nicht erst auftreten.
    Martin

    P.S.: Sorry für meine Worte, aber das kann ja wohl nicht wahr sein, oder?



  • 1. Ich erwarte von keinem Hilfe...
    2. Du solltest dich mal ändern, und nachdenken warum ich einen so kurzzen satz post denn:

    Programm läuft;
    ich mache aus "#define NACHRICHT 1" ein "#defin NACHRICHT WM_APP+1";
    Programm läuft nicht;
    ich setze die änderung wieder auf "#define NACHRICHT 1" zurück;
    programm läuft;
    

    Was sagt mir das?
    Es liegt an der änderung...
    Was will ich?
    Wissen warum diese änderung einen programmabsturz erzeugt...

    Ist das zuviel verlangt?

    [edit]in einem anderen Programm funktionierts!?



  • Ja ist es mit den paar Informationen die du uns gibst!!!
    Vielleicht solltest du dich mal ändern und anfangen ordentlich zu Programmieren und nicht so eine Kinderkacke hier (das ist bezogen auf deine nicht vorhandene Entwicklungsumgebung usw.)

    schirrmie



  • Du überquerst eine Straße.
    Du machst das statt um 2 Uhr nachts um 2 Uhr nachmittags;
    Du wirst überfahren.
    Du versuchst es wieder um 2 Uhr nachts;
    Alles geht gut.

    Was sagt dir das?
    Es liegt an der Uhrzeit...

    Was du niemandem gesagt hast: Du gehst grundsätzlich nur bei Rot über die Ampel. Der Fehler in deinem "Programm" macht sich nicht bemerkbar, wenn du das mitten in der Nacht tust, aber trotzdem hat die Veränderung des Parameters Uhrzeit absolut nichts mit dem Problem oder seiner Lösung zu tun.

    Was will ich?
    Wissen warum diese änderung einen programmabsturz erzeugt...

    Weil du einen Fehler in deinem Code hast.

    Ist das zuviel verlangt?

    Wenn du genauere Informationen willst, aber selbst keine lieferst, ja.



  • (mein edit von eben)
    soll ich kündigen? Geht schlecht...
    Aber wenn ihr mir solange keine Hilfe geben wollt bis ich ne vernünftige Umgebung habe... Ganz ehrlich... Is ne scheiß Einstellung. Klar ist schon nicht soo geil, mit sonem Editor, aber was soll ich machen? Mir sind da die Hände gebunden.

    Ich habe auch nicht lust jet irgendwie 600 - 700 Zeilen Code zu posten, der auf 4 Dateien verteilt ist...
    Ich kann dir gerne das hier geben:

    #define richText 	WM_APP+1
    #define bmFile		WM_APP+2
    

    und dann

    LRESULT CALLBACK WndProc( HWND targetWnd, UINT wndMsg, WPARAM wParam, LPARAM lParam )
    {
    	switch( wndMsg )
    	{
    		case WM_COMMAND:
    			switch( LOWORD(wParam) )
    			{
    				case bmFile:
    					hideAll();  //versteckt 3 andere fenster
    					ShowWindow( liFile, SW_SHOWNORMAL );
    					visitMsg = true;
    
    				break;
    				case richText:
    					hideAll();
    					visitMsg = true;
    				break;
    			{
    		break;
    	{
    	if( !visitMsg )
    		return DefWindowProc( targetWnd, wndMsg, wParam, lParam );
    
    	return visitMsg;
    }
    

    So was bringt dir das mehr?
    Programmabsturz ist immer noch...

    Komischerweise funktioniert das in einem anderen Programm.



  • lippoliv schrieb:

    So was bringt dir das mehr?

    Zunächst einmal die Information, dass du Quatsch erzählt hast. Du hast keine selbstdefinierten Nachrichten, sondern selbstdefinierte Command IDs. Da musst du natürlich darauf achten, dass die nicht mit bestehenden Command IDs kollidieren.

    lippoliv schrieb:

    Programmabsturz ist immer noch...

    Mag sein. Kommt auch drauf an, was in hideAll passiert, und wie und wann du diese Nachrichten sendest.

    Versuch doch bitte zumindest mal, die Absturzstelle durch Ausgaben einzugrenzen.



  • Oh man kann wieder Reden, dass ist nett. Danke.

    Also:
    Message = Nachricht; dachte man kann das so allgemein Benutzen...

    void hideAll( void )
    {
    	ShowWindow( liFormat, SW_HIDE );
    	ShowWindow( liFile, SW_HIDE );
    	ShowWindow( liEdit, SW_HIDE );
    }
    

    mehr ist das nicht.

    Ok jetzt die lösung:
    Ich hatte inen Array of HWND, und damit ich weiß welche checkbox wo ist, habe ich defines gemacht

    //lediglich zur lesbarkeit eines array
    #define cbkMain		0
    #define cbkTXT		1
    #define cbkINI		2
    #define cbkPHP		3
    #define cbkHTM		4
    #define cbkHTML		5
    #define cbkCSS		6
    //lediglich zur lesbarkeit eines array
    #define rbsaTXT		0
    #define rbsaMND		1
    

    die Kommentare fehleten, also bin ich durch ud habe daraus

    #define cbkMain    WM_APP+X...
    

    gemacht 😃
    Natürlich war dann alles auserhalb jeder reichweite von dem Array.

    Danke.. so und jetzt zu der Fehlrnachricht:
    hihi jetzt läuft gar nichts mehr...
    Ich muss jetzt erstmal schauen wo der fehler ist, allerdings sollte keiner auftreten oder?

    Ich habe ja die defines geändert, und dass sollte sich dan überall mitändern oder?



  • lippoliv schrieb:

    (mein edit von eben)
    soll ich kündigen? Geht schlecht...
    Aber wenn ihr mir solange keine Hilfe geben wollt bis ich ne vernünftige Umgebung habe... Ganz ehrlich... Is ne scheiß Einstellung. Klar ist schon nicht soo geil, mit sonem Editor, aber was soll ich machen? Mir sind da die Hände gebunden.

    Ich versteh die Einstellung von deinem Chef nicht, einerseits sollst du lernen Code zu lesen (sei mal dahingestellt das du das mit einer ordentlich IDE genauso gut lernen kannst) aber andereseits fragst du wegen jedem scheis hier im Forum. Weis das dein Chef?

    Aber zurück zum Thema. Wie MFK schon geschrieben, wenn du keinen debugger hast dann hilf dir anders um die Fehlerquelle einzugrenzen. Mach nach jeder zeile eine MessageBox oder so, dan weist du wann der Absturz passiert.
    Und das habe ich dir schonmal gesagt, warum machst du so einen Mist?

    if( !visitMsg )
            return DefWindowProc( targetWnd, wndMsg, wParam, lParam );
    
        return visitMsg;
    

    schirrmie



  • Wohl doch ein größeres problem?

    #define WINVER 0x0600
    #include <windows.h>
    #include <windowsx.h>
    #include <stdbool.h>
    #include <richedit.h>
    #include "./wndClasses.h"
    
    #define VERSION 	"0.00.01.080214"
    #define appName 	"GUIfN"
    #define richText	WM_APP+1
    #define targetName	WM_APP+2
    #define sendBtn		WM_APP+3
    
    HWND 	myAppWnd,
    		myMsgPaper,
    		myTargetName,
    		sendButton;
    HICON	appIcon;
    char 	appTitle[120];
    
    LRESULT CALLBACK WndProc( HWND, UINT, WPARAM, LPARAM );
    bool createMainWindow( HINSTANCE );
    
    //BeginOfProgramm
    int WINAPI WinMain( HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow )
    /*
    	Autor:	Oliver Lippert
    	Begin:	2008-02-14
    	End:		==============
    	Description:
    		This program is the GUI for NaDiA.
    		Some people dislike the CMD, so ther's a order to write a GUI for the NaDiA tool,
    		written by Holger Gründling and Felix Kostka, a really little part is also written by me.
    */
    {
    	MSG myWndMsg;
    
    	sprintf( appTitle, "GUIfN - The GUI for NaDiA | Version: %.7s", VERSION );
    
    	appIcon = LoadImage( hInstance, "./app.ico", IMAGE_ICON, 0, 0, LR_DEFAULTCOLOR | LR_LOADFROMFILE );
    	if( regStandardWnd( hInstance, appName, (WNDPROC)WndProc, (HBRUSH)COLOR_WINDOW, &appIcon ) &&
    		createMainWindow( hInstance ) )	//Fenster Registrieren und Hauptfenster erstellen
    	{
    		while( GetMessage( &myWndMsg, NULL, 0, 0 ) )		//Auf Nachricht warten(muss in jedes Windows-Programm)
    		{
    			TranslateMessage( &myWndMsg );	//Übersetzt von "Virtual Key" zu "Character" message
    			DispatchMessage( &myWndMsg );	//Bearbeitet die Message(std oder nach WndProc())
    		}
    	}
    }
    
    bool createMainWindow( HINSTANCE myHandleInst )
    {
    	HWND myWnd;
    	bool returnValue = true;
    	RECT parent;
    
    	myWnd = CreateWindow(
    				appName,			//Name der Fensterklasse
    				appTitle,			//Titel des Fensters
    				WS_VISIBLE,			//Stil des Fensters
    				CW_USEDEFAULT,		//Position X
    				CW_USEDEFAULT,		//Position Y
    				500,				//Breite
    				300,				//Höhe
    				NULL,				//Parent
    				NULL,				//Menue
    				myHandleInst,		//Handle des Programms
    				NULL				//Zusätzliche Daten
    			);
    
    	if( !myWnd )
    		returnValue = false;
    	else
    	{
    		myAppWnd = myWnd;
    		ShowWindow( myWnd, SW_SHOWNORMAL );
    		UpdateWindow( myWnd );		//WM_PAINT message an Fenster senden
    	}
    
    	return returnValue;
    }
    
    LRESULT CALLBACK WndProc( HWND myWnd, UINT msg, WPARAM wParam, LPARAM lParam )
    {
    	bool		visit	= false;
    	HDC			myHdc;
    	PAINTSTRUCT	myPaint;
    
    	switch( msg )
    	{
    		case WM_CREATE:
    			if( LoadLibrary( "riched32.dll" ) )
    			{
    				myMsgPaper = CreateWindow( "RICHEDIT", "", ES_NOHIDESEL | WS_CHILD | WS_VISIBLE | WS_DLGFRAME | ES_MULTILINE, 100, 60, 390, 170, myWnd, (HMENU)richText, ((LPCREATESTRUCT)lParam)->hInstance, NULL );
    				myTargetName = CreateWindow( "EDIT", "", WS_CHILD | WS_VISIBLE | WS_DLGFRAME, 100, 10, 120, 25, myWnd, (HMENU)targetName, ((LPCREATESTRUCT)lParam)->hInstance, NULL );
    				sendButton = CreateWindow( "BUTTON", "Senden", BS_FLAT | WS_CHILD | WS_VISIBLE | WS_DLGFRAME, 250, 245, 100, 25, myWnd, (HMENU)sendBtn, ((LPCREATESTRUCT)lParam)->hInstance, NULL );
    			}
    			visit = true;
    		break;
    		case WM_PAINT:
    			myHdc = BeginPaint( myWnd, &myPaint );
    			{
    				TextOut( myHdc, 70, 14, "An:", 3 );
    				TextOut( myHdc, 59, 65, "Text:", 5 );
    			}
    		break;
    
    		case WM_COMMAND:
    			switch( LOWORD(wParam) )
    			{
    				case sendBtn:
    					printf( "." );
    				break;
    			}
    		break;
    
    		case WM_CLOSE:
    			PostQuitMessage( 0 );
    		break;
    	}
    
    	if( !visit )
    		return DefWindowProc( myWnd, msg, wParam, lParam );
    
    	return visit;
    }
    

    Ganz einfach...
    habe ich nun stehen

    #define sendBtn		WM_APP+3
    

    kann ich den Button klicken bis ich blöd werd, kein punkt erscheint

    #define sendBtn		1
    

    hier jedoch ist kein Problem vorhanden... Dat läuft.
    Da kommen buttons bei jedem klicke.

    [eidt_for_schirrimme]
    Wenn mir bei uns in der Firma keine helfen kann (alle keine Zeit) muss ich mir wie du schon gesagt hast selbst helfen und im Internet fragen.
    Ausserdem ist "wegen jeden scheiß" relativ... Für mich ist vieles noch neu, und daher ein wenig schwerer zu verstehen als für dich.

    schirrimme schrieb:

    Und das habe ich dir schonmal gesagt, warum machst du so einen Mist?

    was ist daran mist?
    Bei dem default liegen mir die returns zu weit auseinander.

    [2ter edit]mit klammern um die rechnung im define gehts.



  • Hör auf, WM_APP für Steuerelement-IDs zu benutzen, das ist Quatsch.

    Und zum eigentlichen Problem: Du musst deine Defines in Klammern setzen. Solltst du dir sowieso angewöhnen, damit es eben nicht zu solchen unliebsamen Überraschungen kommt. Dank Zeigerarithmetik ist nämlich (MENU)WM_APP + 3 etwas anderes als (HMENU)(WM_APP + 3).



  • siehe edit..

    allerdings funktionierts im myNote nicht(also das ding was ich nciht gepostet habe).
    Wie was meinst du mit

    MFK schrieb:

    Hör auf, WM_APP für Steuerelement-IDs zu benutzen, das ist Quatsch.

    Was soll ich denn machen einer sagt "benutz das" ein anderer "benutz esnicht, das ist quatsch".... ???



  • lippoliv schrieb:

    allerdings funktionierts im myNote nicht(also das ding was ich nciht gepostet habe).

    Tragisch. Ich habe keine Lust mehr, für dich den Debugger zu spielen.

    lippoliv schrieb:

    Was soll ich denn machen einer sagt "benutz das" ein anderer "benutz esnicht, das ist quatsch".... ???

    Der "eine" war ich, und ich hatte dir WM_APP empfohlen, weil DU von selbstdefinierten Nachrichten erzählt hast. Du hast aber gar keine selbstdefinierten Nachrichten, also ist natürlich auch die Verwendung von WM_APP sinnlos.

    Das kommt dabei raus, wenn man unzureichende oder falsche Informationen liefert.



  • MFK schrieb:

    Ich habe keine Lust mehr, für dich den Debugger zu spielen.

    Ist ok, zwinge ja keinen 😉

    MFK schrieb:

    [...]weil DU von selbstdefinierten Nachrichten erzählt hast. Du hast aber gar keine selbstdefinierten Nachrichten,[...]

    Würdest du mir dann den Unterschied von Nachrichten und Steuerelement-IDs erklären? Weil im grunde bedeutet SendMessage ja "SendeNachricht" woo ist da also der unterschie?

    MFG und danke für alle Posts



  • lippoliv schrieb:

    Würdest du mir dann den Unterschied von Nachrichten und Steuerelement-IDs erklären? Weil im grunde bedeutet SendMessage ja "SendeNachricht" woo ist da also der unterschie?

    Grundlagen der Windows-Programmierung. Mach' Dir bitte einen Gefallen und kaufe Dir ein Buch dazu (meinetwegen gesponsort vom Chef).



  • Frag' die Doku (MSDN)...

    greetz, Swordfish



  • Frag die Doku, guter punkt, nur habe ich das Talent falsch zu suchen...
    "difference between message and command id"
    "message and command id"

    benuze ich ne falsche MSDN?
    http://msdn2.microsoft.com/en-us/default.aspx



  • Ja, du suchst falsch. Wie kommst du bei deinen Suchbegriffen darauf, dass die beiden Arten von IDs irgendwas miteinander zu tun haben (und somit ihre Unterschiede herausgestellt werden müssten)?

    Child-Window Identifier ➡ CreateWindowEx
    Das zweite Stichwort hast du bereits bekommen: ➡ WM_APP

    greetz, Swordfish


Anmelden zum Antworten