probleme button zu verbergen
-
hallo,
habe folgendes problem. wenn ich mein programm starte, öffnet sich ein fenster, welches durch einen dialog ausgefüllt wird. ich habe ein paar edit_controls und button da drin. zu beginn setze ich den inhalt der controls auf null:
CPicToLightView::CPicToLightView() : CFormView(CPicToLightView::IDD) { //{{AFX_DATA_INIT(CPicToLightView) m_schublade = 0; m_fach = 0; m_stkzahl= 0; //}}AFX_DATA_INIT }nun möchte ich zu beginn mehrere button nicht anklickbar machen. das wollte ich dann machen, in dem ich oben noch folgende Zeile hinzufüge.
btnHwRelease.EnableWindow(false);Das funktioniert jedoch leider nicht. das programm bricht sofort mit einer fehlermeldung ab.
komme da einfach nicht weiter. wäre klasse, wenn mir da jemand weiterhelfen könnte.
vielen dank.
gruß
sven
-
Jo...
Im Konstruktor ist der Button noch nicht erstellt!
CPicToLightView::OnInitDialog(void) { CDialog::OnInitDialog(); // ... btnHwRelease.EnableWindow(false); }
-
wenn ich folgendes einfüge:
BOOL CPicToLightView::OnInitDialog() { CDialog::OnInitDialog(); btnHwRelease.EnableWindow(false); return TRUE; // Geben Sie TRUE zurück, außer ein Steuerelement soll den Fokus erhalten }erhalte ich folgende fehlermeldung:
'CDialog::OnInitDialog::CDialog::OnInitDialog': Unzulässiger Aufruf einer nicht statischen Memberfunktion

-
onInitDialog(....wird auch gar nicht aufgerufen

-
Sry... hab mich vertan... hatte dir die Lösung für einen Dialog gegeben und nicht für eine FormView... OnInitialUpdate...
-
hat jemand eine andere idee?...ich komme da gar nicht mehr weiter

gruß
sven
-
OnInit...(...) ist die richtige Funktion für so etwas.
Manchmal fehlt irgendwo die Aktualisierung von Fenstern/Controls.
Probiere in solchen Fällen UpdateData(FALSE) bzw. Invalidate():UpdateData( TRUE ) transferiert Daten aus den Steuerelementen in die Variablen.
UpdateData( FALSE ) transferiert Daten aus den Variablen in die Steuerelemente.
Invalidate() erzwingt sofortiges Neuzeichnen.Bei CEdit gibt es auch die Funktion SetReadOnly():
m_ctlEdit1.SetReadOnly();Falls Du eine Datenbankanwendung in MFC bastelst, ist das lesenswert:
http://www.se.fh-heilbronn.de/usefulstuff/VCPLUS6/kap13.htm und Folgekapitel
-
hallo,
ich habe das nun mal folgender maßen probiert, das funktioniert allerdings auch nicht.
void CPicToLightView::OnInitialUpdate() { // Beim Start des Programms wird eine Messagebox angezeigt CFormView::OnInitialUpdate(); MessageBox("Text Text Text"); Init.EnableWindow(false); btnHwRelease.EnableWindow(false); btnHwInit.EnableWindow(false); }Die Messagebox wird angezeigt, wenn man die dann mit OK quittiert, brichts ds Programm wieder an der Stelle Init.EnableWindow(false); ab.
Ich denke die Button existieren zu der zeit noch nicht, aber ich weiß absolut nicht, wo das sonst hingehöen sollte.
gruß
sven
-
KOmmando zurück, jetzt funktioniert es. ich habe noch folgendes vergessen für jeden Button einzutragen:
DDX_Control(pDX, IDC_BTNHWRELEASE, btnHwRelease);Jetzt funktioniert es!
