Initilisierung einer EditBox geht nicht

Klaus1311

Grünschnabel
Hallo,

seit kurzem arbeite ich mit Visual Studio 2005 Standard (mit SP) auf Win XP SP2. Mein Problem:
Ich habe eine dialogorientierte Anwendung, aus der ich eine andere modale Dialogbox aufrufe. In der neuen Dialogbox möchte ich ein Editfeld mit einem Text versorgen. Bei meinen früheren Programmen (Native Windows) habe ich zum Zeitpunkt WM_INITDIALOG diese Felder versorgt. Analog dazu habe ich bei OnInitDialog mit WM_SETTEXT meinen Text gesendet, Rückgabewert == 0 dementsprechend auch kein Text im Editfeld. Alle Classes und functions mit dem Assistenten erzeugt. Der Code:


BOOL CUrlModify::OnInitDialog()
{
CDialog::OnInitDialog();

int ret;

ret = (int)SendDlgItemMessage(IDC_DESCRIPTION,WM_SETTEXT,0,(LPARAM)"123");
return TRUE;.
}

Was mache ich falsch?

vielen Dank für Eure Hilfe im Voraus
 
Lt. MSDN kommt der Rückgabewert dann, wenn das Control nicht gefunden wird. Da solltest du mal schauen, ob sich IDC_DESCRIPTION auch im richtigen Dialog befindet.

Da VS2005-Projekte standardmäßig als UNICODE-Projekte angelegt werden, sollte man für den Text das "_T"-Makro verwenden:
C++:
ret = (int)SendDlgItemMessage(IDC_DESCRIPTION,WM_SETTEXT,0,(LPARAM)_T("123"));
Gruß
MCoder
 
Hallo MCoder,

vielen Dank für Deine Antwort. Den Macro habe ich nicht benutzt, da ich in den Projekteigenschaften den Parameter Zeichensatz auf "Multi-Byte-Zeichensatz" eingestellt habe. Die ID liegt in diesem Dialog, ich denke eher es fehlt das Windowhandle, denn der Aufruf:
GetDlgItem(IDC_DESCRIPTION)->EnableWindow(FALSE);
führt zu einer Exception. Im Debugger ist die Variable m_hWnd == 0.



Gruß
Klaus
 
Das sieht einfach danach aus, als ob entweder die Edit nicht auf dem Dialog drauf ist oder die ID nicht passt.
Prüf mal den Rückgabewert von GetDlgItem( IDC_DESCRIPTION ). Wenn der NULL ist, dann ist da am Dialogaufbau etwas nicht in Ordnung. Entweder ist this dann nicht der Dialog oder die Edit hat eine andere ID abbekommen.
 
Hallo,

Ihr hattet natürlich beide recht. Ich habe 2 Dialogboxen mit Editfeldern, wobei ein Feld die gleiche ID hat - dachte ich. Aber bei einer ID hatte ich mich verschrieben. Also nochmals vielen Dank

Gruß Klaus
 
Zurück