Herzlich Willkommen, lieber Gast!
  Sie befinden sich hier:

  Forum » VC++ / MFC » Nichtmodales Dialogfeld verknüpfen

Forum | Hilfe | Team | Links | Impressum | > Suche < | Mitglieder | Registrieren | Einloggen
  Quicklinks: MSDN-Online || STL || clib Reference Grundlagen || Literatur || E-Books || Zubehör || > F.A.Q. < || Downloads   

Autor Thread - Seiten: > 1 <
000
09.01.2006, 15:20 Uhr
~harry
Gast


Hallo,

nichtmodale Dialogfelder kann ich bereits erstellen, jedoch verstehe ich nicht wie ich sie Verknüpfen kann mit z.B. der CView Klasse eines SDI Programmes.

Grundsätzlich versteh ich das so,

(m_bAnzeige2 ist die Membervariable auf eine Checkbox (IDD_CHECK1))
ich habe in der View eine Variable die sich m_bAnzeige1 nennt und im Dialogfeld eine Variable die ich m_bAnzeige2 nennt.

jetzt muss ich irgendwie den Inhalt der m_bAnzeige2 auf den Inhalt der m_bAnzeige1 bringen, jedoch mit einem einfachen Pointer auf das Dialogfeld gelingt mir das nicht...

könnte mir vielleicht jemand erklären wie ich das richtig mache?

danke mal,

mfG Harry
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
001
09.01.2006, 16:17 Uhr
LowFly



hmm also ich kenn das so.
die header des dialogfeldes in die headerdatei der cview includen.
dann die variable für das dialogfeld von dem dialogfeld in der headerdatei der cview ableiten.

CMeinDialog m_MeinDlg;

dann solltest du den inhalt von m_bAnzeige2 mit

m_bAnzeige1 = m_MeinDlg.m_bAnzeige2;

übertragen können.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
002
09.01.2006, 19:08 Uhr
harrychen



Hm danke soweit war ich jedoch auch schon...

Er updatet mir jedoch nicht wenn ich das "Hakerl" wegmache bzw anmache, sondern bleibt im Anfangszustand.

(Am besten wäre es wenn ich über einen Buttondruck zb. OnApply die Daten an die View übertragen kann und er mir die dann diese neu zeichnet sozusagen)

wäre auch schon über ne Lösung ohne Button zufrieden...hm
vielleicht hat ja jemand ein kleines Programm schon mit so einem Dialogfeld gemacht, dass er eventuell uploaden oder mir schicken könnte mit kurzer Erklärung, wäre ideal

mfg Harry

Dieser Post wurde am 09.01.2006 um 19:31 Uhr von harrychen editiert.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
003
09.01.2006, 23:18 Uhr
mmc20
puss in boots


hi, am "einfachsten" schickst du bei BN_CLICKED des IDC_CHECK1 eine nachricht(SendMessage(...)) an die view, welche dann die members updated.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
004
10.01.2006, 12:07 Uhr
~harry
Gast


hm wie sollte denn die Nachricht dann aussehen?

GetParent->SendMessage(m_bGrid);? oder wie müsst ich das machen? bin etwas ratlos wie ich in der CView dann die neuen Daten verarbeiten kann...
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
005
10.01.2006, 12:10 Uhr
~harry
Gast


mal mein code:

bein anhackerln der Checkbox
Mir ist nicht ganz klar was er mir jetzt überträgt...bzw. wie das richtig ausschauen sollte

[CODE]void CMyDialog::OnCheck1()
{
GetParent()->SendMessage(WM_MY_MESSAGE,m_bGrid);

}[/CODE]

hier müsste nun doch irgendwie das m_bGrid wenn ich es anklicke bzw. deaktiviere geupdatet werden.
Brauch ich dazu nicht einen Aufruf ?

[CODE]void CGfxView::OnDraw(CDC* pDC)
{
CGfxDoc* pDoc = GetDocument();
ASSERT_VALID(pDoc);


if(m_bGrid)
{
CPen maxPen(PS_SOLID,5,RGB(255,0,0));
pDC->SelectObject(&maxPen);
pDC->Rectangle(100,100,200,200);
}
}
[/CODE]

mfg
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
006
10.01.2006, 12:24 Uhr
mmc20
puss in boots


hi, in deiner view muss natürlich eine funktion auf die nachricht reagieren, und in dieser steht dann zb. "m_bAnzeige1 = m_MeinDlg.m_bAnzeige2;"
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
007
10.01.2006, 12:39 Uhr
~harry
Gast


ja genau, aber wie reagiert eine Funktion auf meine Nachricht?
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
008
11.01.2006, 01:49 Uhr
mmc20
puss in boots



C++:
// am besten in der app
#define WMU_MEINEMESSAGE WM_USER

// in der view .cpp
BEGIN_MESSAGE_MAP(CChildView0, CView)
    //{{AFX_MSG_MAP(CChildView0)
    ON_COMMAND(...)
    //}}AFX_MSG_MAP
    ON_MESSAGE(WMU_MEINEMESSAGE, OnMeinMessage) // <-- hier
END_MESSAGE_MAP()

LRESULT CChildView0::OnMeinMessage(WPARAM wParam, LPARAM lParam)
{
// hier auf die message reagieren...
    return 0L;
}


Dieser Post wurde am 11.01.2006 um 01:50 Uhr von mmc20 editiert.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
009
11.01.2006, 15:00 Uhr
harrychen



danke,

mein problem war, das ich immer im "falschen" Fenster war da ich meinen Dialog in Der FrameWnd Klasse OnCreate befunden habe...durch casten und dem Befehl GetActiveView(); hab ichs dann hinbekommen


mfg
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
Seiten: > 1 <     [ VC++ / MFC ]  


ThWBoard 2.73 FloSoft-Edition
© by Paul Baecher & Felix Gonschorek (www.thwboard.de)

Anpassungen des Forums
© by Flo-Soft (www.flo-soft.de)

Sie sind Besucher: