Also nochmal: Dialogbox aktivieren
-
Ach das warn noch zeiten mit visual basic -.-'
normalerweise würde ich ja nicht n neuen beitrag zum gleichen thema erstellen, aber ich fummel schon den ganzen tag hier rum und krieg nix gebacken...Wenn ich aus der Ressource ne Klasse mache, muss ich dann irgendwas beachten? ICh hab die Klasse erstellt, so sieht der Code aus mit dem ich den Dialog aktivieren will:
CMainFrm TheMainFrm; TheMainFrm.DoModal;Wobei CMainFrm natürlich die Klasse darstellt. Wenn ich die Headerdatei nicht einbinde, kommt natürlich ein Fehler, weil CMainFrm nicht erkannt wird. Binde ich allerdings die Headerdatei ein, dann kommt folgendes:
e:\projekte\mapeditor\mainfrm.cpp(4) : fatal error C1083: Cannot open include file: 'script3.h': No such file or directory
MapEditor.cpp
e:\projekte\mapeditor\mainfrm.h(14) : error C2504: 'CDialog' : base class undefined
e:\projekte\mapeditor\mainfrm.h(17) : error C2629: unexpected 'class CMainFrm ('
e:\projekte\mapeditor\mainfrm.h(17) : error C2238: unexpected token(s) preceding ';'
e:\projekte\mapeditor\mainfrm.h(30) : error C2061: syntax error : identifier 'CWnd'
e:\projekte\mapeditor\mainfrm.h(32) : error C2061: syntax error : identifier 'CDataExchange'
e:\projekte\mapeditor\mainfrm.h(43) : error C2143: syntax error : missing ';' before '}'
E:\PROJEKTE\MapEditor\MapEditor.cpp(31) : error C2039: 'DoModal' : is not a member of 'CMainFrm'
e:\projekte\mapeditor\mainfrm.h(13) : see declaration of 'CMainFrm'Kann irgendeiner nem verzweifeltem Newbie helfen?

-
ich bin zwar auch ein newbie, aber so viel ich weiss heissts so:
TheMainFrm.DoModal();vl war ja das der fehler.... aber das ist nicht alles glaub ich.
mfg, NiHiL
-
Jo stimmt, aber daran lag es natürlich nich... grrr
-
Schick doch mal die Header Datei Script3.h
-
hmm das is ja das prob, die gibts nämlich gar nicht, aber der ClassWizard hat die include Datei automatisch hinzugefügt... Wenn ich das wegmache kommen noch mehr Fehler

-
// MainFrm.cpp : implementation file // #include "script3.h" #include "MainFrm.h" #include <Windows.h> #ifdef _DEBUG #define new DEBUG_NEW #undef THIS_FILE static char THIS_FILE[] = __FILE__; #endif ///////////////////////////////////////////////////////////////////////////// // CMainFrm dialog CMainFrm::CMainFrm(CWnd* pParent /*=NULL*/) : CDialog(CMainFrm::IDD, pParent) { //{{AFX_DATA_INIT(CMainFrm) // NOTE: the ClassWizard will add member initialization here //}}AFX_DATA_INIT } void CMainFrm::DoDataExchange(CDataExchange* pDX) { CDialog::DoDataExchange(pDX); //{{AFX_DATA_MAP(CMainFrm) // NOTE: the ClassWizard will add DDX and DDV calls here //}}AFX_DATA_MAP } BEGIN_MESSAGE_MAP(CMainFrm, CDialog) //{{AFX_MSG_MAP(CMainFrm) // NOTE: the ClassWizard will add message map macros here //}}AFX_MSG_MAP END_MESSAGE_MAP() ///////////////////////////////////////////////////////////////////////////// // CMainFrm message handlers BOOL CMainFrm::Create(LPCTSTR lpszClassName, LPCTSTR lpszWindowName, DWORD dwStyle, const RECT& rect, CWnd* pParentWnd, UINT nID, CCreateContext* pContext) { // TODO: Add your specialized code here and/or call the base class return CDialog::Create(IDD, pParentWnd); } int CMainFrm::DoModal() { // TODO: Add your specialized code here and/or call the base class return CDialog::DoModal(); }Also das is der Code der CMainFrm-Datei die vom ClassWizzard erstellt wurde.
Daran habe ich keine Änderungen vorgenommen.// MapEditor.cpp : Defines the entry point for the application. // #include <TriBase.h> #include <Windows.h> #include "..\\TriBase\\Beispiele\\Allgemeines\\InitWindow.h" #include "resource.h" #include "mainfrm.h" tbResult Render (float fNumSecsPassed) { return TB_OK; } //***************************************************************** tbResult Move (float fNumSecsPassed) { return TB_OK; } //***************************************************************** int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow) { tbInit(); InitWindow(640, 480, "Map Editor", NULL); CMainFrm TheMainFrm; TheMainFrm.DoModal(); tbDoMessageLoop(Render, Move); ExitWindow(); tbExit(); return 0; }Und das ist Die Hauptdatei, aus der die Form erstellt werden soll. Das drumherum ist nur ein teil eines Tutorials, ebenso die TriBase.h und die InitWindow.h
An den andern Sachen liegt der Fehler aber nich, das lief vorher alles schön
(naja war ja nich viel
)
-
welche änderungen liegen denn zwischen vorher und jetzt?
-
ehm^^ ich versteh die f´rage nich^^^
da liegen gar keine änderungen vor bis auf die dialogsaufruffunktion vor
-
achso das is n winapi tutorial in dem du mit dem mfc wizard rumgepfuscht hast
mal abgesehn davon, dass ich von der mischung nix halte fehlen dir die mfc header
#define VC_EXTRALEAN // Selten verwendete Teile der Windows-Header nicht einbinden #include <afxwin.h> // MFC-Kern- und -Standardkomponenten #include <afxext.h> // MFC-Erweiterungen #include <afxdisp.h> // MFC Automatisierungsklassen #include <afxdtctl.h> // MFC-Unterstützung für allgemeine Steuerelemente von Internet Explorer 4 #ifndef _AFX_NO_AFXCMN_SUPPORT #include <afxcmn.h> // MFC-Unterstützung für gängige Windows-Steuerelemente #endif // _AFX_NO_AFXCMN_SUPPORT
-
Ach Mist, es get noch immer nicht

Aber du hast gesagt das wär ne schlechte Mischung... Mir is ja völlig egal nach welchem Prinzip ich das mache, ich will bloß das Fenster öffnen lassen, haste ne andere Idee wie ich das machen könnte?
-
es is als anfänger einfacher entweder alles mit winapi von hand zu schreiben (winmain, createwindow etc.), oder den mfc wizard das grundgerüst bauen zu lassen (neues projekt->mfc exe) und dann mit dem dialogeditor zusäzliche fenster zu basteln
bevor man beides mischt sollte man zumindest mit jedem einzelnen einigermaßen vertraut sein
am besten erstellst du ein neues projekt mit dem mfc wizard (dialogbasierende anwendung)
da hast du dann schonmal einen funktionierenden dialogin der funktion DeinDialog::OnInitDialog kannst du dann noch sachen reinschreiben, die vor dem öffnen des dialogs passiern sollen
wenns dann noch probleme gibt meld dich einfach