forms visible und invisible machen

darkarchon

Gesperrt
hallo,

habe eine form (dialog) den ich invisible machen möchte und einen anderen dafür visible. es würde mir auch reichen wenn mir einer sagen könnt wie man ein object, z.b. einen button invisible machen kann. ich habe zwar die msdn installiert, aber ich bekomme einfach keinerlei passende hilfen dafür... und wie kann ich sinnvolle hilfen anzeigen lassen ? kenne bisher nur die :: und -> möglichkeit, gibts da nicht noch mehr ?


danke schonmal

Gruss

Fabian
 
Du kannst jedes beliebige Fenster sichtbar machen mit ShowWindow( hwnd, SW_SHOW ); . Verstecken geht auch. Für MFC gibt es ShowWindow() auch als Methode von CWnd - da kannst du dann auf's hwnd verzichten. Näheres in der MSDN: Klick

Ich persönlich verwende in der Regel die lokal komplett installierte Version der MSDN. Wenn ich was zu einem Stichwort suche, das ich genau kenne (das Wort oder die Klasse), gebe ich den Begriff im Index ein -- das führt normalerweise am schnellsten zu Resultaten. Wenn ich nicht genau weiss, wie das, was ich suche, eigentlich heisst, versuche ich es mit der Suchfunktion oder Google. Wenn das auch nichts bringt, frage ich Freunde, Kollegen oder Tutorials.de. Selbst wenn dabei nichts herauskommt, habe ich dann gewöhnlich genug zusätzlichen Kontext, um meine Suche sinnvoll einschränken zu können.

Auf das IntelliSense, was du ansprichst, kann man sich leider nicht immer verlassen. Da ich nicht immer mit VC++ arbeite, habe ich inzwischen aufgehört, mich darauf zu verlassen.
 
Zuletzt bearbeitet:
also ich habe das gerade mal getestet... leider ohne erfolg...

mal für dumme : also ich habe z.b. den default ABOUT dialog und will mir den jetzt vom default CXXXXDialog anzeigen lassen... dann gehe ich doch in den CXXXXDialog und erstelle mir ein object von der klasse ABOUT welches ich dann mit der showwindows funktion aufrufe, aber was gebe ich als parameter an ? was bedeutet hwnd ?

also ich müsste ja z.b. CAboutDlg *testi;
//int hwnd = IDD_TEST2_DIALOG;
testi->ShowWindow(hwnd);

machen, aber was trage ich für hwnd ein ?


sorry das ich so dämlich frage, aber ich würde das gerne lernen aber finde die mfc voll umständlich...

Gruss

Fabian
 
ok hat sich erledigt es geht...

danke für den funktionsnamen showwindow damit kann man bei google auch was finden ;)

thx nochmal
 
Original geschrieben von darkarchon
CAboutDlg *testi;
//int hwnd = IDD_TEST2_DIALOG;
testi->ShowWindow(hwnd);

Auch wenn sich dein Problem inzwischen schon erledigt hat, würde es mich doch interessieren, was du mit deinem Code beabsichtigt hattest. Einen Dialog (modal) zu öffenn, ist dank MFC ziemlich einfach:
Code:
		CAboutDlg dlgAbout;
		dlgAbout.DoModal();
Das genügt. Du findest es in jeder generierten MFC-Dialoganwendung in OnSysCommand() .
 
wollte nur ein paar einträge (buttons und dialoge) bei bestimmten aktionen visible und invisible schalten oder deaktivieren

haben das mit :

GetDlgItem(button1id)->ShowWindow(false);

und

GetDlgItem(button1id)->EnableWindow(false);


gemacht... ebenso mit forms oder listboxen oder so...


aber danke für deine hilfe, du hast uns erst auf die spur geführt ;)

das DoModal(); bringt in dem fall leider nichts, da es ja nur dafür sorgt das eine sache komplett im vordergrund bleibt, dann wäre z.b. ein umschalten von fenstern z.b. aus einem hintergrundfenster herraus, oder einer menü leiste im hintergrund nicht mehr möglich....
 
Hallo,

aber wie geht das Ganze denn , wenn ich Forms vom Typ IDC_STATIC bzw. IDC_EDIT habe, da will der das bei mir nicht so wirklich

Code:
void CFB_Zeiten::OnEnKillfocusEdit1()
{
	UpdateData(TRUE);
	// TODO: Add your control notification handler code here
	if ( m_sMonat == "Mai" )
	{
		GetDlgItem(IDC_EDIT2)->EnableWindow(true);
	}
	else
		GetDlgItem(IDC_EDIT2)->EnableWindow(false);
}
 
Hallo
Du kannst auch über den Klassenassi dir zu jedem Edit oder Static eine Controlvariabel erstellen! Wichtig du kannst über die Auswahl Kategorie auswaählen was für ein Varabelntyp du haben willst, da wähle Control!
Für Staticfelder ist es ratsam die vorgegebene ID_STATIC zu ändern!
Code:
CEdit	m_CAusgabe;	
CStatic       m_stText;
Und dann kannst du diese mit der Methode
Code:
m_CAusgabe..ShowWindow(false); //  Edit nicht anzeigen
m_stText.ShowWindow(false);
Zum Sichtbar machen so:
Code:
m_CAusgabe..ShowWindow(true); //  Edit  anzeigen
m_stText.ShowWindow(true);

Denk mal das sollte auch so klappen!

sven

p.s um schneller in der MSDN zu arbeiten gehe ich mit dem Cursor auf den Bergriff und drücke F1 dann sucht dir die MSDN gleich die richtige Info dazu heraus! Spart auch viel Suchnerven! :)
 
Zuletzt bearbeitet:
Danke Sven, bei dem Editfeld gings aber bei dem Staticfeld meckert der Assi rum, das er dazu keine Variable anlegen kann :-( Und nu ?
 
Zurück