Herzlich Willkommen, lieber Gast!
  Sie befinden sich hier:

  Forum » VC++ / MFC » Dialog aus DLL

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 < [ 2 ]
000
04.09.2005, 14:02 Uhr
Wiesenlieger



Hi,

ist es möglich, aus einer erweiterten MFC-DLL einen Dialog zu öffnen?
Unter "Resourcen" einen Dialog mitsamt neuer Klasse hinzuzufügen, ist ja kein Problem.
Aber wenn ich aus meiner Anwendung den Dialog mit:

C++:
SucheDlg *dlg = new SucheDlg();
dlg->DoModal();


öffnen will, stürzt das Progi ab.
Geht das nicht so einfach?

Die Klasse "SucheDlg" hat natürlich das "AFX_EXT_CLASS" bekommen und ist public.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
001
04.09.2005, 19:22 Uhr
xXx
Devil


createdialog, geht das?!
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
002
04.09.2005, 20:23 Uhr
Wiesenlieger



klingt vernünftig!
denn wenn ich es debugge, bekomme ich kein Handle für das Dialogfenster zurück und dann stirbt er bei DoModal().
Aber wie macht man das dann? Kannst Du ein Beispiel geben?
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
003
04.09.2005, 21:58 Uhr
xXx
Devil



C++:
CMyDialog* pDialog;

void CMyWnd::OnSomeAction()
{
   //pDialog initialized to NULL in the constructor of CMyWnd class
   pDialog = new CMyDialog();
   //Check if new succeeded and we got a valid pointer to a dialog object
   if(pDialog != NULL)
   {
      BOOL ret = pDialog->Create(IDD_MYDIALOG,this);
      if(!ret)   //Create failed.
         AfxMessageBox("Error creating Dialog");
      pDialog->ShowWindow(SW_SHOW);
   }
   else
      AfxMessageBox("Error Creating Dialog Object");
}



Tstst.. wo für hat MS denn eigentlich die MSDN Library erschaffen?!
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
004
04.09.2005, 22:24 Uhr
Wiesenlieger



kommt dieser Fehler:

error C2664: 'int __thiscall CDialog::Create(const char *,class CWnd *)' : Konvertierung des Parameters 1 von 'const int' in 'const char *' nicht moeglich
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
005
04.09.2005, 22:42 Uhr
FloSoft
Medialer Over-Flow
(Administrator)


IDD_MYDIALOG sollte das enum sein das in deiner extension-klasse die dialogressourceid angibt
--
class God : public ChuckNorris { };
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
006
04.09.2005, 23:08 Uhr
Wiesenlieger



schon klar.
da hab ich mein enum eingesetzt
und hab auch meine Klasse SucheDlg eingesetzt

hab jetzt das gleiche mal mit einem Dialog, der nicht in der dll liegt sondern in der exe, probiert, kommt der gleiche Fehler.

Was mich stutzig macht ist, dass das mit DoModal() funktioniert hatte und jetzt nachdem ich ganz woanders weiterprogrammiert habe, gehts nicht mehr?!
Debugge ich das Progi, so wie oben, hat mein SearchDlg kein Handle.
im Debuggfenster steht: {PtSearch hWnd=???}
vermutlich liegts daran. aber was tun?

zur Erinnerung:
Klasse PtSearch und Dialog IDD_SEARCHDLG sind in der MFC-DLL


ich danke Euch schon mal für die rege Beteiligung
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
007
05.09.2005, 09:46 Uhr
FloSoft
Medialer Over-Flow
(Administrator)


probier mal vorm dialog create das resourcehandle auf die dll zu setzen, und danach wieder auf die exe. Evtl findet er einfach das dialoghandle nicht, oder was evtl schlimmer ist: Vielleicht überschneiden sich zwei DialogIDS?
--
class God : public ChuckNorris { };
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
008
05.09.2005, 14:19 Uhr
Wiesenlieger



hab nachgeschaut,
die ID gibts nicht doppelt.

Ich vermute, das Projekt ist irgendwie beschädigt.
Hab testweise eine neue MDI-Anwendung und DLL gebaut, Dialog genauso eingebunden, funktioniert enwandfrei!
Mit Deinem Rat: "das resourcehandle auf die dll zu setzen" kann ich leider nichts anfangen.
Ich finde C++ furchtbar kompliziert, ganz besonders VC++. Java ist dagegen was zum Erholen.
Leider komm ich nicht umhin VC++ zu nutzen.

Danke für Eure Hilfe!
Melde mich sicher bald wieder
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
009
05.09.2005, 15:06 Uhr
FloSoft
Medialer Over-Flow
(Administrator)


hast du wirklich alle values in resource.h vom projekt und resource.h von der dll verglichen? kein wert von IDD_* darf mit der DLL übereinstimmen (der rest schon)
--
class God : public ChuckNorris { };
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
Seiten: > 1 < [ 2 ]     [ 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: