[Source] Button deaktivieren?

03/01/2012 17:58 Unleashed!#1
Hey,
Ich habe gerade mal ein Fenster programmiert, und wollte jetzt einen Button deaktivieren, also so, dass er grau unterlegt wird und danach nicht mehr betätig werden kann.
Ich habe es jetzt erstmal so versucht:
(CWndStatus::OnInitialUpdate)
Code:
CWndButton* pWndButton = ( CWndButton* )GetDlgItem( WIDC_BUTTON1 );
pWndButton->m_bEnable = FALSE;
Ging aber nicht, der Client hängt sich auf und stürzt ab.

Ich hoffe ihr könnt mir mal wieder helfen ^^
MFG Unleashed!
03/01/2012 18:01 aldimaster#2
PHP Code:
CWndButtonpWndButton = ( CWndButton* )GetDlgItemWIDC_BUTTON1 );
pWndButton->EnableWindowFALSE 
So sollte es gehen.

Greetz
03/01/2012 18:21 Unleashed!#3
Crasht iwie immer noch, ID des Buttons hab ich auch nochmal überprüft.
Kann es daran liegen, dass ich das in die OnInitialUpdate reingetan habe?
Wenn ja, wo muss der Button dann hin, wenn er aktiviert werden soll, wenn die EXP voll sind?
Also ungefähr so:
Code:
	CWndButton* pWndButton = ( CWndButton* )GetDlgItem( WIDC_BUTTON1 );
	CMover* pMover =  g_pPlayer;
	if( pMover->m_nExp == 100 ) //kann sein, dass es falsch ist, brauche nur die Funktion.
		pWndButton->m_bEnable = TRUE;
	else
		pWndButton->EnableWindow( FALSE );
03/01/2012 18:59 aldimaster#4
Was genau willst du machen ?

PHP Code:
CMoverpMover =  g_pPlayer
Wieso erstellst du einen neuen Mover anstatt g_pPlayer zu benutzen ?
PHP Code:
if( pMover->m_nExp == 100 
Wahrscheinlich willst du abfragen ob der prozentuale Anteil der EXP 100% ist, jedoch liefert m_nExp keinen Prozentwert zurück.
Wenn deine Exp 100% sind dann wird m_nExp wieder geleert.
Ich müsste wissen was du vorher um die heir zu helfen.

PHP Code:
    pWndButton->m_bEnable TRUE
Hier wieder die EnabledWindow Methode nutzen.
Ich weiß nicht ob es über die Variable auch geht, aber mit der Methode funzt es ganz sicher.

Greetz
03/01/2012 19:02 Unleashed!#5
Das gerade war nur ein Beispiel, trotzdem Thanks :P
Habs rausgefunden, lag an dem OnInitialUpdate(wahrscheinlich wird das gespammt oder?).
Jetzt hab ich es in der OnDraw, die frage ist jetzt, ob es da auch aktualisiert wird.

Edit: Noch ein problem, wenn ich einen int zu einem CString konvertieren will:
Code:
	CString output;
	printf ( output, "%d", 0 ); //Zum Test eine 0.

	pWndStatic->SetTitle( output );
Kommt ein leeres Static raus :/
03/01/2012 19:31 aldimaster#6
Quote:
Das gerade war nur ein Beispiel, trotzdem Thanks :P
Habs rausgefunden, lag an dem OnInitialUpdate(wahrscheinlich wird das gespammt oder?).
Jetzt hab ich es in der OnDraw, die frage ist jetzt, ob es da auch aktualisiert wird.
OnDraw wird nur aufgerufen wenn du das Fenster öffnest, sprich, es gezeichnet wird.

Zum 2ten Problem.
%d wird nur benutzt wenn du den Wert einer Variable in einen String konvertieren willst.
Wenn du eine einfache Zahl ausgeben lassenw illst kannst du diese einfach in den String schreiben.

Greetz