[changeTopic]...



  • Lösung:

    flag = LoadImage( hInstance, "flag.ico", IMAGE_ICON, 0, 0, LR_DEFAULTCOLOR | LR_LOADFROMFILE );
    

    ^^ auf ins nächste Problem...

    icon = (HANDLE)SendMessage( myWnd, BM_GETIMAGE, IMAGE_ICON, (WPARAM)NULL );
    if( icon != flag)
    {
    	if( NULL == (HANDLE)SendMessage( myWnd, BM_SETIMAGE, (LPARAM)IMAGE_ICON, (WPARAM)flag ) )
    		printf( "%d; fialure ", GetLastError() );
    	printf( "disable\n" );
    }
    

    Ich kriege da immer "failure"... Also geht es immer schief...

    Ich bin auf der Suche, falls euch was auffällt...

    Was ich machen will:
    ich will die Handles von flage und icon (das handle zu dem aktuellen bild) vergleichen, daran will ich feststellen ob ein Button schoon die Falge als bild hat... oder kannich das anders feststellen?


  • Mod

    RTFM (Read the Fine MSDN)

    BM_SETIMAGE Doku:

    The return value is a handle to the image previously associated with the button, if any; otherwise, it is NULL.

    NULL heißt doch nur: Da war nichts zuvor!



  • RTFM = Read the fucking manual... so kenne ich das 🙄

    Ich lese auf dieser (http://msdn2.microsoft.com/en-us/library/bb775987(VS.85).aspx) seite schon ewig und suche den fehler.... Tja genauer lesen währe die Lösung.

    Danke dir, allerdings bekommmt der Button kein Bild!?



  • Hat der Button denn das Style fürs Bild?, Muss der Button neu gezeichnet werden?

    schirrmie



  • Neuzeichnen kann sein BS_ICON ist vorhanden...

    [edit]InvalidateRect bringt nichts


  • Mod

    Hat der Button von Anfang an den Stil BS_ICON?



  • Bei CreateWindow... ja... steht aber nicht an erster stelle!?



  • Hmm weis zwar nicht ob es daran liegt aber versuch mal diese Typumwandlung

    SendMessage(hButton,  BM_SETIMAGE, (WPARAM) IMAGE_ICON, (LPARAM)(HANDLE) hIcon);
    

    schirrmie



  • Leider nein... Danke trotzdem, währ ja anhaltspunkt...

    Hatte allerdings WPARAM und LPARAM vertauscht (casten)... Aber auch das funktioniert nicht..



  • LRESULT CALLBACK myBtn( HWND myWnd, UINT msg, WPARAM wParam, LPARAM lParam )
    {
    	bool visit = false;
    	int x = 0,
    		y = 0;
    	HICON icon;
    	switch( msg )
    	{
    		case WM_LBUTTONUP:
    			//code
    		break;
    		case WM_RBUTTONUP:
    			if( !isEnd )
    			{
    				icon = (HANDLE)SendMessage( myWnd, BM_GETIMAGE, IMAGE_ICON, (WPARAM)NULL );	//Aktuelles Icon laden
    				if( icon != flag )	//Wenn der button keine flagge hat
    				{
    					SendMessage( myWnd, BM_SETIMAGE, (WPARAM)IMAGE_ICON, (LPARAM)(HANDLE)flag );
    
    					printf( "disable\n" );
    				}
    				else	//Wenn der button die Flage hat
    				{
    					printf( "enable\n" );
    					SendMessage( myWnd, BM_SETIMAGE, IMAGE_ICON, (WPARAM)NULL );//Flagge entfernen
    				}
    				visit = true;
    			}
    			else
    				restart();
    		break;
    	}
    	if( !visit )
    		return DefWindowProc( myWnd, msg, wParam, lParam );
    
    	return visit;
    }
    

    Der HANDLE cast in zeile 18 kann auch HICON sein, oder ganz weg, nix geht...

    help?? 😞

    PS: die sind von mir gesubbclasst...


Anmelden zum Antworten