statusbar SetText mit 2 IDS texten

matriNET

Mitglied
hi

ich habe ein porblem das ich i statusbar ein mit IDS nutzen kann

beispiel so soll es anzeigen

mute-net:connected

mit diesem code gehts nicht

Code:
statusbar.SetText(GetResString(IDS_MUTENET)+":"+(IDS_CONNECTED),3,0);

aber mit
Code:
statusbar.SetText(GetResString(IDS_MUTENET)+":(IDS_CONNECTED)",3,0);

wirds nur so angezeigt

Code:
  mute-net:(IDS_CONNECTED)


weis jemand wie ich machen muss damit es so geht wie ich es denke?
 
Die SetText-Funktion erwartet als ersten Parameter einen Zeiger auf einen String. Das bedeutet, du mußt den String vorher formatieren und dann den Zeiger übergeben.
Code:
CString string=GetResString(IDS_MUTENET)+":"+IDS_CONNECTED,3,0);
statusbar.SetText(string,3,0);
Wobei noch zu prüfen wäre, ob du nicht IDS_CONNECTED vorher auch noch formatieren mußt, ich vermute das mal.

Mfg

langer
 
habe das in emule code gesehe wegen strings

Code:
CString CemuleDlg::GetConnectionStateString()
 {
 	CString status;
 	if (theApp.serverconnect->IsConnected())
 		status = _T("eD2K:") + GetResString(IDS_CONNECTED);
 	else if (theApp.serverconnect->IsConnecting())
 		status = _T("eD2K:") + GetResString(IDS_CONNECTING);
 	else
 		status = _T("eD2K:") + GetResString(IDS_NOTCONNECTED);
 
 	if (Kademlia::CKademlia::isConnected())
 		status += _T("|Kad:") + GetResString(IDS_CONNECTED);
 	else if (Kademlia::CKademlia::isRunning())
 		status += _T("|Kad:") + GetResString(IDS_CONNECTING);
 	else
 		status += _T("|Kad:") + GetResString(IDS_NOTCONNECTED);
 	return status;
 }

hier ist mein code wegen dem statusbar wegen connected:

Code:
//**************************************************************************************
 //  FUNCTION:   -	UpdateConnectionStatus()
 //  RETURNS:	-	
 //  PARAMETERS: -	
 //  COMMENTS:   -	Draws the right stuff on the status bar for connections..
 //**************************************************************************************
 LRESULT CMUTEMFC2Dlg::UpdateConnectionStatus(WPARAM, LPARAM lParam)
 {
 	CString str;	    		    	
 	m_ulLastNumOfConnections = (unsigned long) lParam;
 
 	str.Format( "%d ", m_ulLastNumOfConnections );
 	str += m_ExtStr.LoadString( IDS_TAB_TITLE_CONNECTIONS_TEXT_ENG + g_unStringLanguageIdOffset );		
 	m_oConnectionStatusLabel.SetText( str );
 	
 	if( 0 == m_ulLastNumOfConnections )
 	{	
 		m_oConnectionStatusLabel.SetBkColor( colRed );
 		statusbar.SetIcon(3,connicons[0]);
 		//statusbar.SetText(GetResString(IDS_NOTCONNECTED),3,0);
 	 //statusbar.SetText(GetResString(IDS_MUTENET)+":"+(IDS_NOTCONNECTED),3,0);
 		CString string=GetResString(IDS_MUTENET)+":"+IDS_NOTCONNECTED,3,0);
 		statusbar.SetText(string,3,0);
 
 	}
 	if( 1 == m_ulLastNumOfConnections )
 	{	
 		m_oConnectionStatusLabel.SetBkColor( colYellow2 );
 		statusbar.SetIcon(3,connicons[1]);
 		//statusbar.SetText(GetResString(IDS_CONNECTED),3,0);
 		//statusbar.SetText(GetResString(IDS_MUTENET)+":"+(IDS_CONNECTED),3,0);
 		CString string=GetResString(IDS_MUTENET)+":"+IDS_CONNECTED,3,0);
 		statusbar.SetText(string,3,0);
 		
 
 	}
 
 	else
 	{				
 		m_oConnectionStatusLabel.SetBkColor( colGreen );
 		statusbar.SetIcon(3,connicons[2]);
 		//statusbar.SetText(GetResString(IDS_CONNECTED),3,0);
 		//statusbar.SetText(GetResString(IDS_MUTENET)+":"+(IDS_CONNECTED),3,0);
 		CString string=GetResString(IDS_MUTENET)+":"+IDS_CONNECTED,3,0);
 		statusbar.SetText(string,3,0);
 		
 
 	}
 	m_oConnectionStatusLabel.Invalidate();
 	return (LRESULT) TRUE;
 }

beckomme fehler glaube habe was vergessen?

e:\MUTE\mfcstatusbar17.09.05\MFC_MUTE_GUI\MFC_MUTE_GUIDlg.cpp(710): error C2666: 'ATL::CStringT<BaseType,StringTraits>::eek:perator`+'': 3 Überladungen haben ähnliche Konvertierungen
with
[
BaseType=char,
StringTraits=StrTraitMFC<char>
]
e:\MUTE\mfcstatusbar17.09.05\MFC_MUTE_GUI\MFC_MUTE_GUIDlg.cpp(710): error C2059: Syntaxfehler: ')'
e:\MUTE\mfcstatusbar17.09.05\MFC_MUTE_GUI\MFC_MUTE_GUIDlg.cpp(720): error C2059: Syntaxfehler: ')'
e:\MUTE\mfcstatusbar17.09.05\MFC_MUTE_GUI\MFC_MUTE_GUIDlg.cpp(732): error C2059: Syntaxfehler: ')'
e:\MUTE\mfcstatusbar17.09.05\MFC_MUTE_GUI\MFC_MUTE_GUIDlg.cpp(710): error C2059: Syntaxfehler: 'constant'
e:\MUTE\mfcstatusbar17.09.05\MFC_MUTE_GUI\MFC_MUTE_GUIDlg.cpp(720): error C2059: Syntaxfehler: 'constant'
e:\MUTE\mfcstatusbar17.09.05\MFC_MUTE_GUI\MFC_MUTE_GUIDlg.cpp(732): error C2059: Syntaxfehler: 'constant'
e:\MUTE\mfcstatusbar17.09.05\MFC_MUTE_GUI\MFC_MUTE_GUIDlg.cpp(134): error C2275: 'std::string': Ungültige Verwendung dieses Typs als Ausdruck
e:\MUTE\mfcstatusbar17.09.05\MFC_MUTE_GUI\MFC_MUTE_GUIDlg.cpp(720): error C2666: 'ATL::CStringT<BaseType,StringTraits>::eek:perator`+'': 3 Überladungen haben ähnliche Konvertierungen
with
[
BaseType=char,
StringTraits=StrTraitMFC<char>
]
e:\MUTE\mfcstatusbar17.09.05\MFC_MUTE_GUI\MFC_MUTE_GUIDlg.cpp(732): error C2666: 'ATL::CStringT<BaseType,StringTraits>::eek:perator`+'': 3 Überladungen haben ähnliche Konvertierungen
with
[
BaseType=char,
StringTraits=StrTraitMFC<char>
]
 
habe das GetResString in Utilities.h gefunden ist das richitige?
es gibt nur ein eintrag!

Code:
CString GetResString(RESSTRIDTYPE StringID);
 
Mach mal folgendes: Kommentiere alle Zeilen aus, die Fehler verursachen. Wenn der Compiler dann alle Dateien ordentlich übersetzen kann, kümmer dich um die Linker-Fehler (die eigentlich nicht mehr sein sollten). Wenn der Linker alles findet, dann mache folgendes: Speichere das, was GetResString zurückgibt, in einem CString und schau dir an, was da drin steht. Kann auch sein, es hilft
Code:
CString string=GetResString(.....);
string+=":";
Wenn das ausgegeben wird, kümmere dich um die zweite ID.
Und dann sehen wir weiter.

langer
 
du meinst ich soll es in die Utilities.h einsetzen?

Code:
 CString string=GetResString(.....);
  string+=":";

das mute-net muss nicht unbedingt ein IDS nutzen nur die das IDS_NOTCONNECTED usw

weil mute-net muss nicht übersetzt werden später wenn man andere sprachen nutzt!

wie eD2K
 
Nee, nee, ich meinte nur, das der Code
Code:
CString string=GetResString(...)+":"+......
vielleicht in Konflikt mit den CString-Operatoren steht und man den String halt in einzelnen Teilen formatieren und zusammensetzen muß. Übrigens habe ich herausgefunden, daß GetResString ein CString-Objekt zurückgibt, das sollte in Ordnung sein. Aber wie gesagt, immer der Reihe nach. Erst das Programm zum Laufen bringen, dann Änderungen einarbeiten. Wenn du an drei Stellen gleichzeitig suchst, wird das nichts.

langer
 
Zuletzt bearbeitet:
hier

bei diesem versuch
Code:
CString=GetResString(IDS_MUTENET)+":"+(IDS_NOTCONNECTED),3,0);

habe diese konflikte
Code:
e:\MUTE\mfcstatusbar17.09.05\MFC_MUTE_GUI\MFC_MUTE_GUIDlg.cpp(709): error C2666: 'ATL::CStringT<BaseType,StringTraits>::operator`+'': 3 Überladungen haben ähnliche Konvertierungen
		with
		[
			BaseType=char,
			StringTraits=StrTraitMFC<char>
		]
e:\MUTE\mfcstatusbar17.09.05\MFC_MUTE_GUI\MFC_MUTE_GUIDlg.cpp(709): error C2059: Syntaxfehler: ')'
e:\MUTE\mfcstatusbar17.09.05\MFC_MUTE_GUI\MFC_MUTE_GUIDlg.cpp(709): error C2059: Syntaxfehler: 'constant'
e:\MUTE\mfcstatusbar17.09.05\MFC_MUTE_GUI\MFC_MUTE_GUIDlg.cpp(709): error C2513: 'ATL::CStringT<BaseType,StringTraits>': Keine Variable vor '=' deklariert
		with
		[
			BaseType=char,
			StringTraits=StrTraitMFC<char>
]
 
Klar, du mußt nach CString natürlich einen Variablennamen angeben.
Und dann mußt du natürlich das Anhängsel hinter (IDS_NOTCONNECTED) bis zum Semikolon löschen.
Schreib dafür mal
Code:
CString string=GetResString(.....);
string+=":";
und dann schau, was der Compiler sagt. Und bitte, Die Zeilen im Code hervorheben, die er anmeckert. Weil in der Fehlermeldung zwar eine Zeilennummer steht, ich aber nicht weiß, welche denn nun gemeint ist.

langer
 

Neue Beiträge

Zurück