[VC++6.0] Problem beim Ermitteln der Buttonbeschriftungen

Allvater

Grünschnabel
Schiff Ahoi,
ich habe folgendes Problem:
Ich arbeite an einem dialogbasiertem Programm, bei dem auf dem Startdialog 60(!) Buttons plaziert sind. Die Buttons haben die Beschriftung 01 - 60.
Wenn ich auf einen dieser Buttons klicke, soll sich ein Dialogfenster öffnen, in dem die Beschriftung des angeklickten Buttons angezeigt wird. Da ich nicht für jeden Button einen Dialog erstellen wollte, habe ich einen Dialog für jeden Button genommen.
Wenn ich nun folgenden Code benutze...

char strBtnName[3];
int nMaxCount = sizeof(strBtnName);
GetDlgItemText(IDC_disp01 , m_strBtnName, nMaxCount);

... schmiert das Programm bei einem Klick auf einen Button ab mit der Meldung "Debug assertion failed" :-{

Wie bekomme ich nun die Buttonbeschriftung in diesem neuen Dialogfenster angezeigt?

Dangö im Vorraus
 
Hallo!

Aus MSDN, zu GetDlgItemText():

"Return Values
If the function succeeds, the return value specifies the number of characters copied to the buffer, not including the terminating null character.

If the function fails, the return value is zero. To get extended error information, call GetLastError."

Teste mal den Returnwert und ruf gegebenenfalls GetLastError auf.
Diese Funktion gibt einen Fehlercode zurück, den Du mit ... Moment... FormatMessage() in einen String umwandeln kannst. Vielleicht hilft Dir das weiter. Übrigens, welchen Typ hat m_strBtnName? Du hast da ja ausserdem auch noch ein strBtnName. Tippfehler?

Übrigens: 60 Buttons in einem Dialog? Das muss entweder eine komische Übung oder ein Designproblem sein. Bin sehr neugierig.

Viel Erfolg,

Peter
 
Ahoi,
also: Wenn ich meinen Code auf einen Button anwende, geht das ohne Probleme.
m_strBtnName und strBtnName sind CString.
Was die 60 Buttons angeht - ist ein Spezialsteuerprogramm für Anzeigen; muß also so sein :)
Dann hab ich mir das noch mal überlegt: Ich muß anscheinen doch für jeden Button einen Dialog erstellen da die Funktion die beschriftung ja nicht herausfinden kann, ohne dass ich die ID vorher angegeben habe :-s

Trotzdem thx
 
Zurück