Editfeld und das soll gehen? angeblich.
-
int CChildView::OnCreate(LPCREATESTRUCT lpCreateStruct) { if (CWnd ::OnCreate(lpCreateStruct) == -1) return -1; m_wndEdit.Create (WS_CHILD | WS_VISIBLE | WS_VSCROLL | ES_MULTILINE | ES_AUTOVSCROLL, CRect (0, 0, 0, 0), this, IDC_EDIT); return 0; }hier wird ein Editfeld erzeugt.
m_wndEdit ist vom Typ CEdit. In dem Beispielquellcode des Buches was ich vor mir liegen habe steht das so drinnen und es geht auch und nirgends im Programm wird IDC_EDIT definiert. Wenn ich das nun bei einem neuproject versuche sagt er immer er kennt IDC_EDIT nicht wieso?
Wenn ich das richtig verstehe ist das IDC_EDIT doch nur der Bezeichner des editfeldes damit man später über ihn zugreifen kann oder nicht?

-
ich habe nun in der String Table einen Eintrag erzeugt und den IDC_EDIT genannt, aber wenn das schon alles war dann dürfte das Beispiel eigentlich nicht funktionieren, denn in dem Beispielproject gibt es in der String Table keinen IDC_EDIT Eintrag.
Falls einer eine Idee hat was da Phase sein könnte keine scheu.

-
irgendwie will das einfach nicht so wie es soll:
Splitter createn auf die linke seine View und auf die andere Seite View2.
BOOL CMainFrame::OnCreateClient(LPCREATESTRUCT lpcs, CCreateContext* pContext) { //calculate client size CRect cr; GetWindowRect( &cr ); // Create the main splitter with 1 row and 2 columns if ( !m_mainSplitter.CreateStatic( this, 1, 2) ) { MessageBox( "Error setting up m_mainSplitter", "ERROR", MB_OK | MB_ICONERROR ); return FALSE; } // The views for each pane must be created if ( !m_mainSplitter.CreateView( 0, 0, RUNTIME_CLASS(CMyAppView), CSize(cr.Width()/2, cr.Height()), pContext ) ) { MessageBox( "Error setting up splitter view", "ERROR", MB_OK | MB_ICONERROR ); return FALSE; } if ( !m_mainSplitter.CreateView( 0, 1, RUNTIME_CLASS(CMyAppView2), CSize(cr.Width()/2, cr.Height()), pContext ) ) { MessageBox( "Error setting up splitter view", "ERROR", MB_OK | MB_ICONERROR ); return FALSE; } //change flag to show splitter created m_bInitSplitter = true; //return TRUE instead of the parent method since that would //not show our window return TRUE; // return CFrameWnd::OnCreateClient(lpcs, pContext); }Beim View2 dann
int CMyAppView2::OnCreate(LPCREATESTRUCT lpCreateStruct) { if (CView::OnCreate(lpCreateStruct) == -1) return -1; m_wndEdit.Create (WS_CHILD | WS_VISIBLE | WS_VSCROLL | ES_MULTILINE | ES_AUTOVSCROLL, CRect (0, 0, 0, 0), this, IDC_EDIT); return 0; }was doch eigentlich im View ein Editfeld erzeugen sollte. Macht es aber nicht, die Anwendung verreckt ganz sauber =(.
-
hmmmm
hier kommt ein fehler vom 6er studio zu tage:
Update: weisen Sie in dem Winocc.cpp Position 331, zu
Abhilfe:
3. Wählen Sie in dem MFC-Anwendungs-Assistent Schritt 1 Dokument Einfach aus, und deaktivieren Sie Dokument Unterstützung von Architektur.
wie bekomme ich das per hand raus?
in der InitInstance steht nichts verdächtiges drinnen, das was drinnen ist soll auch drinnen sein.
SCH.... wenn ich das richtig mitbekomme heißt es man soll nicht die Doc/View Architektur nutzen. Toll das kann doch nicht die lösung sein.
-
Problem gelöst

in dem Konstruktor musste nur:
this->m_wndEdit;rein und dann konnte alles andere so bleiben wie es ist.
trotzdem hab ich wieder eine frage

m_wndEdit.Create (WS_CHILD | WS_VISIBLE | WS_VSCROLL | ES_MULTILINE | ES_AUTOVSCROLL, CRect (0, 0, 0, 0), this, IDC_EDIT);Im Beispiel des Buches klappt das da ist die Größe vom CRect mit 0,0,0,0 angegeben aber bei mir fällt dann das Edit Element zusammen erst wenn ich z.B: 0,0,100,100 als Parameter angebe ist ein feld zu sehen in das man schreiben kann. Wie kann ich das Editfeld auf das View anpassen, so das es alles einnimmt vom View?
-
McSnoop schrieb:
Problem gelöst

in dem Konstruktor musste nur:
this->m_wndEdit;rein und dann konnte alles andere so bleiben wie es ist.
Und was soll das helfen? Das ist ein noop statement und macht nichts!
McSnoop schrieb:
Im Beispiel des Buches klappt das da ist die Größe vom CRect mit 0,0,0,0 angegeben aber bei mir fällt dann das Edit Element zusammen erst wenn ich z.B: 0,0,100,100 als Parameter angebe ist ein feld zu sehen in das man schreiben kann. Wie kann ich das Editfeld auf das View anpassen, so das es alles einnimmt vom View?
In dem Du einen ON_SIZE Handler (WM_SIZE) einbaust und auf diese nachricht reagierst und Dein Edit Control anpasst.
Bleiben Fragen für mich:
1. Warum nimmst Du dann nicht gleich einen CEditView?
oder
2. Warum nimmst Du nicht einen CFormView mit den entsprechenden Controls?
-
danke für eure anworten,
Das mit der Anpassen der größe hat geklappt.
Das CEditView und das CFormView schau ich mir an, bis jetzt habe ich die noch nie eingesetzt, weil ich immernoch bei meinen Anfängen bin =). Das wird sich mit der Zeit ändern, aber das geht halt nicht von jetzt auf gleich, immer eines nach dem anderen.