Herzlich Willkommen, lieber Gast!
  Sie befinden sich hier:

  Forum » VC++ / MFC » CWnd to CDialog

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
25.07.2006, 12:20 Uhr
fruitbat



Hallo Zusammen!

Ich hoffe mir kann heute jemand helfen.
Und zwar habe ich das Problem, dass ich eine Tabelle editieren möchte..
Um dies zu machen muss ich in den jeweiligen Zellenbereich eine Editierfenster erzeugen.
Das Problem ist jetzt, dass ich eine dialogbasierte Anwendung habe und beim Aufruf der Funktion


C++:
CEdit m_edit;
m_edit.Create(DWORD dwStyle,const RECT& rect,CWnd* pParentWnd,UINT nID );


ich darauf aufmerksam gemacht werde, dass ich ein Dialog habe und nicht ein CWnd...

weiss da vielleicht jemand Rat?

Danke im Voraus!

Gruß, fruitbat
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
001
25.07.2006, 16:58 Uhr
Tommix



Hallo,
ein CDialog ist ein CWnd. D.h. Du kannst ohne weiteres this für pParentWnd übergeben.
Wie sieht denn Dein Code genau aus und was ist die Fehlermeldung?

- Tommix
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
002
25.07.2006, 17:38 Uhr
fruitbat



hm, okay....
also das Problem ist dass mein Programm erst gar nicht startet und gleich ein Haltepunkt auslöst

ich hab mal geguckt an welcher Stelle es hakt...

beim Aufruf der Methode


C++:
void CMyClass::PreSubclassWindow(){
    
    m_edit.Create(WS_CHILD|ES_LEFT|ES_AUTOHSCROLL,CRect(0,0,100,100),this,GetDlgCtrlID());
    m_edit.ModifyStyleEx(0,WS_EX_LEFT|WS_EX_LTRREADING|WS_EX_NOPARENTNOTIFY,FALSE);

    CClientDC dc(this);
    m_pixelsperinchx=dc.GetDeviceCaps(LOGPIXELSX);
    m_pixelsperinchy=dc.GetDeviceCaps(LOGPIXELSY);
    LOGFONT log;
    COleFont font = m_grid.get_Font();
    CY cy=font.GetSize();
    log.lfCharSet=(unsigned char)font.GetCharset();
    log.lfClipPrecision=0;
    log.lfEscapement=0;
    strcpy(log.lfFaceName,font.GetName());
    log.lfHeight= -MulDiv(cy.Lo,m_pixelsperinchy,720000);
    log.lfItalic=(unsigned char)font.GetItalic();
    log.lfOrientation=0;
    log.lfOutPrecision=0;
    log.lfPitchAndFamily=0;
    log.lfQuality=0;
    log.lfStrikeOut=(unsigned char)font.GetStrikethrough();
    log.lfUnderline=(unsigned char)font.GetUnderline();
    log.lfWeight=font.GetWeight();
    log.lfWidth=0;
    if (m_font!=NULL) delete m_font;
    m_font=new CFont;
    m_font->CreateFontIndirect(&log);
    m_edit.SetFont(m_font);        
}



schon beim ersten Schritt des Erstellen des Editfensters springts in die Klasse dbgrptt.c an die Stelle


C++:
#undef _CrtDbgBreak

/* These methods don't need a separate
   wchar version. Hence they need to be compiled only once from
   the original file */


_CRTIMP void _cdecl _CrtDbgBreak(
    void
    )
{
    DebugBreak();
}



weiss nicht warum!?
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
003
26.07.2006, 09:21 Uhr
FloSoft
Medialer Over-Flow
(Administrator)


du solltest nicht GetDlgCltrlId() verwenden, das dürfte dir das zerhauen. normal solltest du da die (neue) ID des Steuerelements angeben. Ich denke mal da dein parent dort nocht nicht erstellt ist, fliegt dir der GetDlgCtrlId()-Aufruf um die ohren.
--
class God : public ChuckNorris { };
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
004
26.07.2006, 12:57 Uhr
Tommix




Zitat von FloSoft:
du solltest nicht GetDlgCltrlId() verwenden, das dürfte dir das zerhauen. normal solltest du da die (neue) ID des Steuerelements angeben. Ich denke mal da dein parent dort nocht nicht erstellt ist, fliegt dir der GetDlgCtrlId()-Aufruf um die ohren.

Dachte ich auch erst (GetDlgCtrlId des Dialogs selbst liefert 0), aber es muß noch mehr drin stecken. Ist mir bei der Hitze aber zu anstrengend, das ganze drumherum zu erraten.
- Tommix
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
005
27.07.2006, 11:36 Uhr
mmc20
puss in boots


hi, so wie ich die sache sehe will er ja die zellen eines clistctrl's editieren, wiso ist dann sein parent ein cdialog ? müsste doch eigentlich das clistctrl sein ? oder.
also ich hab das auch mal gemacht, und da hab ich mir erst mal ne klasse von clistctrl abgeleitet und in dieser dann den ganzen krempel mit dem dem edit drin.
so wie er das hier darstellt macht er das alles in seiner dialog-klasse ?

Dieser Post wurde am 27.07.2006 um 11:37 Uhr von mmc20 editiert.
 
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: