structs in mfc
-
hallo,
ich hätte nicht gedacht, dass ich bei structs auf solche probleme treffe:
ich will einfach nur ein struct in mfc schreiben, allerdings klappt das nicht, als wie wenn ich eine konsolenanwendung schreiben würde.
ist bestimmt ein noob-problem, wäre aber trotzdem dankbar, wenn mir jemand helfen könnte. aus der msdn werde ich einfach nicht schlau.
lg chris
-
Aloha,
werde doch mal ein bissel konkreter...
Wir reden über das hier :
struct clan{ int ID; int ID_gruender; // Gründer = Leader int ID_gruender_stadt; // Gründerstadt int ID_gilde1; int ID_gilde2; char name[24]; char pass[12]; int ID_Admins[2]; // Max 2 Admins char beschreibung[200]; // Beschreibung des Clans CTime gruenderzeit; };
Und womit kommt Dein Proggi nun net zurecht ?
Grüße
BOA
-
also das ist mein struct:
struct thread1 { int m_ThreadStarte; }
// EierUhrDlg.h : Headerdatei // #pragma once #include "afxwin.h" #include ".\counterThread.h" thread1 test; test //Hier wird mein struct angewendet, geht aber nicht :( // CEierUhrDlg Dialogfeld class CEierUhrDlg : public CDialog { // Konstruktion public: static UINT thrCounter (LPVOID pParam); CEierUhrDlg(CWnd* pParent = NULL); // Standardkonstruktor // Dialogfelddaten enum { IDD = IDD_EIERUHR_DIALOG }; protected: virtual void DoDataExchange(CDataExchange* pDX); // DDX/DDV-Unterstützung // Implementierung protected: HICON m_hIcon; // Generierte Funktionen für die Meldungstabellen virtual BOOL OnInitDialog(); afx_msg void OnSysCommand(UINT nID, LPARAM lParam); afx_msg void OnPaint(); afx_msg HCURSOR OnQueryDragIcon(); DECLARE_MESSAGE_MAP() public: CComboBox m_Zeitvorgabe; CEdit m_Zeitanzeige; int m_CurrentSelect; afx_msg void OnCbnSelchangeZeitvorgabe(); //int m_ThreadStarten; };
wieso geht das nicht???? hab die header eingebunden und geht nicht...
lg
-
Aloha,
ich bin mir jetzt nicht ganz sicher, was Du an dieser Stelle in der Header mit Deiner Struct handlen willst ?
Das ist ja außerhalb das Klassendefiniton ?!?!
Wat soll das denn da ?
Wieso das nicht geht ist im Prinzip klar, an der Stelle ist Deine Struct halt noch bekannt.
Wenn Du sie als Membervariable deklarieren würdest, dann könntest Du die Struct in der Klasse benutzen...Grüße
BOA
-
ich hab absichtlich das stuct außerhalb der klassen-definition geschrieben, um einfach zu testen, ob es funktioniert, aber es funktioniert ja nicht, also wird es in der klasse wohl dann auch nicht funktionieren... :-\
später kommt das struct dann ja in die klassen-def.
lg
-
Aloha,
ich will mal nicht aufgeben....
Deine Struct ist ja nichts weiter als ein Container für eine int - Variable.
Du denkst jetzt nicht, daß Du damit einen Thread startest oder ?
Was soll deine Struct denn bezwecken, vielleicht biste irgendwie auf dem Holzweg, was die Funtion einer Struct angeht.....Grüße
BOA
-
das eigentlich prob beginnt hier:
CWinThread* pThread = AfxBeginThread (thrCounter, &m_ThreadStarten); // kann nur ein Parameter an Thread-Funktion übergeben.
Ich will aber zwei Parameter übergeben: also habe ich mir gedacht: machst en pointer auf en struct mit den variablen/parametern, die du übergeben willst
das ist meine thread-funktion:
UINT CEierUhrDlg::thrCounter(LPVOID pParam) { int* pThreadStarten = (int*) pParam; while (*pThreadStarten) { Sleep(1000); CTime t = CTime::GetCurrentTime(); t=t + 330; CString Datum = t.Format("noch %M Minuten und %S Sekunden"); // Format auswählen m_Zeitanzeige.SetWindowText(Datum); } return 0; }
shice zu erklären :-\
(wenn ich nur wuesste, wo mein fehler liegt...wie in mfc/c++ structs anders deklariert ???
-
Aloha,
wie sieht es denn aus, wenn Du tatsächlich die struct als member der Eieruhrklasse definierst.
Und dem Thread den Zeiger auf die Klasse übergibst, und dann auf die Memberstruct zugreifst ?
Wo immer Du willst schreibst Du das innerhalb einer Funktion der Eieruhrklasse.
CWinThread* pThread = AfxBeginThread (thrCounter, [b]this[/b]); // kann nur ein Parameter an Thread-Funktion übergeben.
Als Member defninerst Du Deine Struct
// EierUhrDlg.h : Headerdatei // #pragma once #include "afxwin.h" #include ".\counterThread.h" // CEierUhrDlg Dialogfeld class CEierUhrDlg : public CDialog { // Konstruktion public: static UINT thrCounter (LPVOID pParam); CEierUhrDlg(CWnd* pParent = NULL); // Standardkonstruktor // Dialogfelddaten enum { IDD = IDD_EIERUHR_DIALOG }; protected: virtual void DoDataExchange(CDataExchange* pDX); // DDX/DDV-Unterstützung // Implementierung protected: HICON m_hIcon; // Generierte Funktionen für die Meldungstabellen virtual BOOL OnInitDialog(); afx_msg void OnSysCommand(UINT nID, LPARAM lParam); afx_msg void OnPaint(); afx_msg HCURSOR OnQueryDragIcon(); DECLARE_MESSAGE_MAP() public: CComboBox m_Zeitvorgabe; CEdit m_Zeitanzeige; int m_CurrentSelect; afx_msg void OnCbnSelchangeZeitvorgabe(); [b]thread1 m_mystruct;[/b] };
Dann kannste damit im Thread arbeiten bis der Arzt kommt....
UINT CEierUhrDlg::thrCounter(LPVOID pParam) { CEieruhrDlg* pEieruhrDlg = (CEieruhrDlg*) pParam; while (*pEieruhrDlg->m_mystruct.m_ThreadStarten == 1) { ..... } while(m_mystruct.m_threadStarten == 1) // sollte auch funzen, da es ja ein Klassenthread ist... return 0; }
Das willste doch ?
BOA
-
genau das will ich
ich probiers gleich mal aus...
vielen thx schonmal
-
Aloha,
ich habe es gerade noch einma überarbeitet, weil ich etwas übersehen habe, Du müßtest auch direkt drauf zugreifen können, da es ja ein Klassen Thread ist.
Da bin ich aber nicht sicher, da ich nur mit "externen" Threads arbeite.
Grüße
BOA
-
An der Stelle, wo du dein Struct anwendest, kannst du jedenfalls keinen Code ausführen(an der Stelle "test). Wenn du innerhalb einer Funktion drauf zugreifst, wird es auch funktionieren
-
wenn ich das jetzt so mach', wie du es gesagt hast, kommt dann der fehler, dass der linke teil kein struct oder klasse (etc.) ist
das sind meine weiteren fehler:
e:\Christian\ProgrammierProjekt\EierUhr\EierUhrDlg.h(13): error C2143: Syntaxfehler : Es fehlt ';' vor ':' e:\Christian\ProgrammierProjekt\EierUhr\EierUhrDlg.h(13): error C2236: 'class' 'CEierUhrDlg' unerwartet e:\Christian\ProgrammierProjekt\EierUhr\EierUhrDlg.h(13): error C2059: Syntaxfehler : ':' e:\Christian\ProgrammierProjekt\EierUhr\EierUhrDlg.h(13): error C2059: Syntaxfehler : 'public' e:\Christian\ProgrammierProjekt\EierUhr\EierUhrDlg.h(14): error C2143: Syntaxfehler : Es fehlt ';' vor '{' e:\Christian\ProgrammierProjekt\EierUhr\EierUhrDlg.h(14): error C2447: '{' : Funktionskopf fehlt - Parameterliste im alten Stil? e:\Christian\ProgrammierProjekt\EierUhr\EierUhrDlg.cpp(48): error C2653: 'CEierUhrDlg' : Keine Klasse oder Namespace e:\Christian\ProgrammierProjekt\EierUhr\EierUhrDlg.cpp(49): error C2653: 'CEierUhrDlg' : Keine Klasse oder Namespace e:\Christian\ProgrammierProjekt\EierUhr\EierUhrDlg.cpp(49): error C2065: 'IDD' : nichtdeklarierter Bezeichner e:\Christian\ProgrammierProjekt\EierUhr\EierUhrDlg.cpp(51): error C2550: 'CEierUhrDlg' : Initialisierungslisten für Konstruktoren dürfen nur in Konstruktordefinition stehen e:\Christian\ProgrammierProjekt\EierUhr\EierUhrDlg.cpp(52): error C2065: 'm_hIcon' : nichtdeklarierter Bezeichner e:\Christian\ProgrammierProjekt\EierUhr\EierUhrDlg.cpp(53): warning C4508: 'CEierUhrDlg' : Funktion sollte einen Wert zurueckgeben; Ergebnistyp 'void' angenommen e:\Christian\ProgrammierProjekt\EierUhr\EierUhrDlg.cpp(55): error C2653: 'CEierUhrDlg' : Keine Klasse oder Namespace e:\Christian\ProgrammierProjekt\EierUhr\EierUhrDlg.cpp(57): error C2248: "CWnd::DoDataExchange" : Kein Zugriff auf protected Element, dessen Deklaration in der Klasse "CWnd" erfolgte e:\Christian\ProgrammierProjekt\EierUhr\EierUhrDlg.cpp(57): error C2352: 'CWnd::DoDataExchange::CWnd::DoDataExchange' : Unzulässiger Aufruf einer nicht statischen Memberfunktion e:\Christian\ProgrammierProjekt\EierUhr\EierUhrDlg.cpp(58): error C2065: 'm_Zeitvorgabe' : nichtdeklarierter Bezeichner e:\Christian\ProgrammierProjekt\EierUhr\EierUhrDlg.cpp(59): error C2065: 'm_Zeitanzeige' : nichtdeklarierter Bezeichner e:\Christian\ProgrammierProjekt\EierUhr\EierUhrDlg.cpp(62): error C2653: 'CEierUhrDlg' : Keine Klasse oder Namespace e:\Christian\ProgrammierProjekt\EierUhr\EierUhrDlg.cpp(62): error C2653: 'CEierUhrDlg' : Keine Klasse oder Namespace e:\Christian\ProgrammierProjekt\EierUhr\EierUhrDlg.cpp(62): error C2065: 'messageMap' : nichtdeklarierter Bezeichner e:\Christian\ProgrammierProjekt\EierUhr\EierUhrDlg.cpp(62): error C2653: 'CEierUhrDlg' : Keine Klasse oder Namespace e:\Christian\ProgrammierProjekt\EierUhr\EierUhrDlg.cpp(62): error C2270: "GetMessageMap" : Modifizierer für Funktionen, die keine Memberfunktionen sind, nicht zulässig e:\Christian\ProgrammierProjekt\EierUhr\EierUhrDlg.cpp(62): error C2653: 'CEierUhrDlg' : Keine Klasse oder Namespace e:\Christian\ProgrammierProjekt\EierUhr\EierUhrDlg.cpp(62): error C2653: 'CEierUhrDlg' : Keine Klasse oder Namespace e:\Christian\ProgrammierProjekt\EierUhr\EierUhrDlg.cpp(62): error C2373: 'messageMap' : Neudefinition; unterschiedliche Modifizierer e:\Christian\ProgrammierProjekt\EierUhr\EierUhrDlg.cpp(62): error C2248: "CDialog::GetThisMessageMap" : Kein Zugriff auf protected Element, dessen Deklaration in der Klasse "CDialog" erfolgte e:\Christian\ProgrammierProjekt\EierUhr\EierUhrDlg.cpp(62): error C2653: 'CEierUhrDlg' : Keine Klasse oder Namespace e:\Christian\ProgrammierProjekt\EierUhr\EierUhrDlg.cpp(62): error C2065: '_messageEntries' : nichtdeklarierter Bezeichner e:\Christian\ProgrammierProjekt\EierUhr\EierUhrDlg.cpp(62): error C2109: Index erfordert ein Array oder einen Zeigertyp e:\Christian\ProgrammierProjekt\EierUhr\EierUhrDlg.cpp(62): error C2653: 'CEierUhrDlg' : Keine Klasse oder Namespace e:\Christian\ProgrammierProjekt\EierUhr\EierUhrDlg.cpp(62): error C2040: '_messageEntries' : 'const AFX_MSGMAP_ENTRY []' unterscheidet sich von ''unknown-type'' in Bezug auf die Anzahl vorgenommener Dereferenzierungen e:\Christian\ProgrammierProjekt\EierUhr\EierUhrDlg.cpp(63): error C2065: 'OnSysCommand' : nichtdeklarierter Bezeichner e:\Christian\ProgrammierProjekt\EierUhr\EierUhrDlg.cpp(64): error C2065: 'OnPaint' : nichtdeklarierter Bezeichner e:\Christian\ProgrammierProjekt\EierUhr\EierUhrDlg.cpp(65): error C2065: 'OnQueryDragIcon' : nichtdeklarierter Bezeichner e:\Christian\ProgrammierProjekt\EierUhr\EierUhrDlg.cpp(67): error C2065: 'OnCbnSelchangeZeitvorgabe' : nichtdeklarierter Bezeichner e:\Christian\ProgrammierProjekt\EierUhr\EierUhrDlg.cpp(73): error C2653: 'CEierUhrDlg' : Keine Klasse oder Namespace e:\Christian\ProgrammierProjekt\EierUhr\EierUhrDlg.cpp(75): error C2352: 'CDialog::OnInitDialog::CDialog::OnInitDialog' : Unzulässiger Aufruf einer nicht statischen Memberfunktion e:\Programme\Microsoft Visual Studio .NET\Vc7\atlmfc\include\afxwin.h(2815) : Siehe Deklaration von 'CDialog::OnInitDialog' e:\Christian\ProgrammierProjekt\EierUhr\EierUhrDlg.cpp(83): error C2660: 'GetSystemMenu' : Funktion akzeptiert keine 1 Parameter e:\Christian\ProgrammierProjekt\EierUhr\EierUhrDlg.cpp(97): error C2065: 'SetIcon' : nichtdeklarierter Bezeichner e:\Christian\ProgrammierProjekt\EierUhr\EierUhrDlg.cpp(102): error C2065: 'm_CurrentSelect' : nichtdeklarierter Bezeichner e:\Christian\ProgrammierProjekt\EierUhr\EierUhrDlg.cpp(103): error C2228: Der linke Teil von '.InsertString' muss eine Klasse/Struktur/Union sein e:\Christian\ProgrammierProjekt\EierUhr\EierUhrDlg.cpp(104): error C2228: Der linke Teil von '.InsertString' muss eine Klasse/Struktur/Union sein e:\Christian\ProgrammierProjekt\EierUhr\EierUhrDlg.cpp(105): error C2228: Der linke Teil von '.InsertString' muss eine Klasse/Struktur/Union sein e:\Christian\ProgrammierProjekt\EierUhr\EierUhrDlg.cpp(106): error C2228: Der linke Teil von '.SetCurSel' muss eine Klasse/Struktur/Union sein e:\Christian\ProgrammierProjekt\EierUhr\EierUhrDlg.cpp(109): error C2065: 'm_ThreadStarten' : nichtdeklarierter Bezeichner e:\Christian\ProgrammierProjekt\EierUhr\EierUhrDlg.cpp(110): error C2065: 'thrCounter' : nichtdeklarierter Bezeichner e:\Christian\ProgrammierProjekt\EierUhr\EierUhrDlg.cpp(110): error C2673: 'OnInitDialog' : Globale Funktionen haben keinen this-Zeiger e:\Christian\ProgrammierProjekt\EierUhr\EierUhrDlg.cpp(120): error C2653: 'CEierUhrDlg' : Keine Klasse oder Namespace e:\Christian\ProgrammierProjekt\EierUhr\EierUhrDlg.cpp(121): error C2365: 'OnSysCommand' : Erneute Definition; vorherige Definition war 'Ehemals unbekannter Bezeichner' e:\Christian\ProgrammierProjekt\EierUhr\EierUhrDlg.cpp(129): error C2248: "CWnd::OnSysCommand" : Kein Zugriff auf protected Element, dessen Deklaration in der Klasse "CWnd" erfolgte e:\Christian\ProgrammierProjekt\EierUhr\EierUhrDlg.cpp(129): error C2352: 'CWnd::OnSysCommand::CWnd::OnSysCommand' : Unzulässiger Aufruf einer nicht statischen Memberfunktion e:\Christian\ProgrammierProjekt\EierUhr\EierUhrDlg.cpp(137): error C2653: 'CEierUhrDlg' : Keine Klasse oder Namespace e:\Christian\ProgrammierProjekt\EierUhr\EierUhrDlg.cpp(138): error C2365: 'OnPaint' : Erneute Definition; vorherige Definition war 'Ehemals unbekannter Bezeichner' e:\Christian\ProgrammierProjekt\EierUhr\EierUhrDlg.cpp(139): error C2660: 'IsIconic' : Funktion akzeptiert keine 0 Parameter e:\Christian\ProgrammierProjekt\EierUhr\EierUhrDlg.cpp(141): error C2673: 'OnPaint' : Globale Funktionen haben keinen this-Zeiger e:\Christian\ProgrammierProjekt\EierUhr\EierUhrDlg.cpp(143): error C2660: 'SendMessageA' : Funktion akzeptiert keine 3 Parameter e:\Christian\ProgrammierProjekt\EierUhr\EierUhrDlg.cpp(149): error C2660: 'GetClientRect' : Funktion akzeptiert keine 1 Parameter e:\Christian\ProgrammierProjekt\EierUhr\EierUhrDlg.cpp(158): error C2248: "CDialog::OnPaint" : Kein Zugriff auf protected Element, dessen Deklaration in der Klasse "CDialog" erfolgte e:\Christian\ProgrammierProjekt\EierUhr\EierUhrDlg.cpp(158): error C2352: 'CDialog::OnPaint::CDialog::OnPaint' : Unzulässiger Aufruf einer nicht statischen Memberfunktion e:\Christian\ProgrammierProjekt\EierUhr\EierUhrDlg.cpp(164): error C2653: 'CEierUhrDlg' : Keine Klasse oder Namespace e:\Christian\ProgrammierProjekt\EierUhr\EierUhrDlg.cpp(165): error C2365: 'OnQueryDragIcon' : Erneute Definition; vorherige Definition war 'Ehemals unbekannter Bezeichner' e:\Christian\ProgrammierProjekt\EierUhr\EierUhrDlg.cpp(169): error C2653: 'CEierUhrDlg' : Keine Klasse oder Namespace e:\Christian\ProgrammierProjekt\EierUhr\EierUhrDlg.cpp(170): error C2365: 'OnCbnSelchangeZeitvorgabe' : Erneute Definition; vorherige Definition war 'Ehemals unbekannter Bezeichner' e:\Christian\ProgrammierProjekt\EierUhr\EierUhrDlg.cpp(172): error C2228: Der linke Teil von '.GetCurSel' muss eine Klasse/Struktur/Union sein e:\Christian\ProgrammierProjekt\EierUhr\EierUhrDlg.cpp(174): error C2228: Der linke Teil von '.SetWindowTextA' muss eine Klasse/Struktur/Union sein e:\Christian\ProgrammierProjekt\EierUhr\EierUhrDlg.cpp(179): error C2653: 'CEierUhrDlg' : Keine Klasse oder Namespace e:\Christian\ProgrammierProjekt\EierUhr\EierUhrDlg.cpp(180): error C2365: 'thrCounter' : Erneute Definition; vorherige Definition war 'Ehemals unbekannter Bezeichner' e:\Christian\ProgrammierProjekt\EierUhr\EierUhrDlg.cpp(181): error C2065: 'CEieruhrDlg' : nichtdeklarierter Bezeichner e:\Christian\ProgrammierProjekt\EierUhr\EierUhrDlg.cpp(181): error C2065: 'pEieruhrDlg' : nichtdeklarierter Bezeichner e:\Christian\ProgrammierProjekt\EierUhr\EierUhrDlg.cpp(181): error C2296: '*' : Ungültig, da der linke Operand vom Typ ''unknown-type'' ist e:\Christian\ProgrammierProjekt\EierUhr\EierUhrDlg.cpp(181): error C2297: '*' : Ungültig, da der rechte Operand vom Typ ''unknown-type'' ist e:\Christian\ProgrammierProjekt\EierUhr\EierUhrDlg.cpp(181): error C2059: Syntaxfehler : ')' e:\Christian\ProgrammierProjekt\EierUhr\EierUhrDlg.cpp(182): error C2227: Der linke Teil von '->m_mystruct' muss auf Klasse/Struktur/Union zeigen e:\Christian\ProgrammierProjekt\EierUhr\EierUhrDlg.cpp(182): error C2228: Der linke Teil von '.m_ThreadStarten' muss eine Klasse/Struktur/Union sein e:\Christian\ProgrammierProjekt\EierUhr\EierUhrDlg.cpp(182): fatal error C1903: Weiterverarbeitung nach vorherigem Fehler nicht möglich; Kompilierung wird abgebrochen. e:\Christian\ProgrammierProjekt\EierUhr\EierUhrDlg.h(13): error C2236: 'class' 'CEierUhrDlg' unerwartet e:\Christian\ProgrammierProjekt\EierUhr\EierUhrDlg.h(13): error C2143: Syntaxfehler : Es fehlt ';' vor ':' e:\Christian\ProgrammierProjekt\EierUhr\EierUhrDlg.h(13): error C2059: Syntaxfehler : ':' e:\Christian\ProgrammierProjekt\EierUhr\EierUhrDlg.h(13): error C2059: Syntaxfehler : 'public' e:\Christian\ProgrammierProjekt\EierUhr\EierUhrDlg.h(14): error C2143: Syntaxfehler : Es fehlt ';' vor '{' e:\Christian\ProgrammierProjekt\EierUhr\EierUhrDlg.h(14): error C2447: '{' : Funktionskopf fehlt - Parameterliste im alten Stil? e:\Christian\ProgrammierProjekt\EierUhr\EierUhr.cpp(48): error C2065: 'CEierUhrDlg' : nichtdeklarierter Bezeichner e:\Christian\ProgrammierProjekt\EierUhr\EierUhr.cpp(48): error C2146: Syntaxfehler : Fehlendes ';' vor Bezeichner 'dlg' e:\Christian\ProgrammierProjekt\EierUhr\EierUhr.cpp(48): error C2065: 'dlg' : nichtdeklarierter Bezeichner e:\Christian\ProgrammierProjekt\EierUhr\EierUhr.cpp(49): error C2440: '=' : ' *__w64 ' kann nicht in 'CWnd *' konvertiert werden e:\Christian\ProgrammierProjekt\EierUhr\EierUhr.cpp(49): error C2440: '=' : ' *__w64 ' kann nicht in 'CWnd *' konvertiert werden e:\Christian\ProgrammierProjekt\EierUhr\EierUhr.cpp(50): error C2228: Der linke Teil von '.DoModal' muss eine Klasse/Struktur/Union sein
Das sind meine ganzen Dateien
// EierUhrDlg.h : Headerdatei // #pragma once #include "afxwin.h" #include "counterThread.h" // CEierUhrDlg Dialogfeld class CEierUhrDlg : public CDialog { // Konstruktion public: static UINT thrCounter (LPVOID pParam); CEierUhrDlg(CWnd* pParent = NULL); // Standardkonstruktor // Dialogfelddaten enum { IDD = IDD_EIERUHR_DIALOG }; protected: virtual void DoDataExchange(CDataExchange* pDX); // DDX/DDV-Unterstützung // Implementierung protected: HICON m_hIcon; // Generierte Funktionen für die Meldungstabellen virtual BOOL OnInitDialog(); afx_msg void OnSysCommand(UINT nID, LPARAM lParam); afx_msg void OnPaint(); afx_msg HCURSOR OnQueryDragIcon(); DECLARE_MESSAGE_MAP() public: CComboBox m_Zeitvorgabe; CEdit m_Zeitanzeige; int m_CurrentSelect; afx_msg void OnCbnSelchangeZeitvorgabe(); thread1 m_mystruct; //int m_ThreadStarten; };
// EierUhrDlg.cpp : Implementierungsdatei // #include "stdafx.h" #include "EierUhr.h" #include "EierUhrDlg.h" #ifdef _DEBUG #define new DEBUG_NEW #endif // CAboutDlg-Dialogfeld für Anwendungsbefehl 'Info' class CAboutDlg : public CDialog { public: CAboutDlg(); // Dialogfelddaten enum { IDD = IDD_ABOUTBOX }; protected: virtual void DoDataExchange(CDataExchange* pDX); // DDX/DDV-Unterstützung // Implementierung protected: DECLARE_MESSAGE_MAP() }; CAboutDlg::CAboutDlg() : CDialog(CAboutDlg::IDD) { } void CAboutDlg::DoDataExchange(CDataExchange* pDX) { CDialog::DoDataExchange(pDX); } BEGIN_MESSAGE_MAP(CAboutDlg, CDialog) END_MESSAGE_MAP() // CEierUhrDlg Dialogfeld CEierUhrDlg::CEierUhrDlg(CWnd* pParent /*=NULL*/) : CDialog(CEierUhrDlg::IDD, pParent) , m_ThreadStarten(0) { m_hIcon = AfxGetApp()->LoadIcon(IDR_MAINFRAME); } void CEierUhrDlg::DoDataExchange(CDataExchange* pDX) { CDialog::DoDataExchange(pDX); DDX_Control(pDX, IDC_ZEITVORGABE, m_Zeitvorgabe); DDX_Control(pDX, IDC_EDIT1, m_Zeitanzeige); } BEGIN_MESSAGE_MAP(CEierUhrDlg, CDialog) ON_WM_SYSCOMMAND() ON_WM_PAINT() ON_WM_QUERYDRAGICON() //}}AFX_MSG_MAP ON_CBN_SELCHANGE(IDC_ZEITVORGABE, OnCbnSelchangeZeitvorgabe) END_MESSAGE_MAP() // CEierUhrDlg Meldungshandler BOOL CEierUhrDlg::OnInitDialog() { CDialog::OnInitDialog(); // Hinzufügen des Menübefehls "Info..." zum Systemmenü. // IDM_ABOUTBOX muss sich im Bereich der Systembefehle befinden. ASSERT((IDM_ABOUTBOX & 0xFFF0) == IDM_ABOUTBOX); ASSERT(IDM_ABOUTBOX < 0xF000); CMenu* pSysMenu = GetSystemMenu(FALSE); if (pSysMenu != NULL) { CString strAboutMenu; strAboutMenu.LoadString(IDS_ABOUTBOX); if (!strAboutMenu.IsEmpty()) { pSysMenu->AppendMenu(MF_SEPARATOR); pSysMenu->AppendMenu(MF_STRING, IDM_ABOUTBOX, strAboutMenu); } } // Symbol für dieses Dialogfeld festlegen. Wird automatisch erledigt // wenn das Hauptfenster der Anwendung kein Dialogfeld ist SetIcon(m_hIcon, TRUE); // Großes Symbol verwenden SetIcon(m_hIcon, FALSE); // Kleines Symbol verwenden // TODO: Hier zusätzliche Initialisierung einfügen m_CurrentSelect = 0; m_Zeitvorgabe.InsertString(0, "Pizza ~ 12 min."); m_Zeitvorgabe.InsertString(1, "Tee ~ 5 min."); m_Zeitvorgabe.InsertString(2, "Brezeln ~ 8 min."); m_Zeitvorgabe.SetCurSel(m_CurrentSelect); m_ThreadStarten = 1; CWinThread* pThread = AfxBeginThread (thrCounter, this); return TRUE; // Geben Sie TRUE zurück, außer ein Steuerelement soll den Fokus erhalten } void CEierUhrDlg::OnSysCommand(UINT nID, LPARAM lParam) { if ((nID & 0xFFF0) == IDM_ABOUTBOX) { CAboutDlg dlgAbout; dlgAbout.DoModal(); } else { CDialog::OnSysCommand(nID, lParam); } } // Wenn Sie dem Dialogfeld eine Schaltfläche "Minimieren" hinzufügen, benötigen Sie // den nachstehenden Code, um das Symbol zu zeichnen. Für MFC-Anwendungen, die das // Dokument/Ansicht-Modell verwenden, wird dies automatisch ausgeführt. void CEierUhrDlg::OnPaint() { if (IsIconic()) { CPaintDC dc(this); // Gerätekontext zum Zeichnen SendMessage(WM_ICONERASEBKGND, reinterpret_cast<WPARAM>(dc.GetSafeHdc()), 0); // Symbol in Clientrechteck zentrieren int cxIcon = GetSystemMetrics(SM_CXICON); int cyIcon = GetSystemMetrics(SM_CYICON); CRect rect; GetClientRect(&rect); int x = (rect.Width() - cxIcon + 1) / 2; int y = (rect.Height() - cyIcon + 1) / 2; // Symbol zeichnen dc.DrawIcon(x, y, m_hIcon); } else { CDialog::OnPaint(); } } // Die System ruft diese Funktion auf, um den Cursor abzufragen, der angezeigt wird, während der Benutzer // das minimierte Fenster mit der Maus zieht. HCURSOR CEierUhrDlg::OnQueryDragIcon() { return static_cast<HCURSOR>(m_hIcon); } void CEierUhrDlg::OnCbnSelchangeZeitvorgabe() { char inText[10]; m_CurrentSelect = m_Zeitvorgabe.GetCurSel(); itoa(m_CurrentSelect,inText,10); m_Zeitanzeige.SetWindowText(inText); } UINT CEierUhrDlg::thrCounter(LPVOID pParam) { CEieruhrDlg* pEieruhrDlg = (CEieruhrDlg*) pParam; while (*pEieruhrDlg->m_mystruct.m_ThreadStarten == 1) { Sleep(1000); CTime t = CTime::GetCurrentTime(); t=t + 330; CString Datum = t.Format("noch %M Minuten und %S Sekunden"); // Format auswählen m_Zeitanzeige.SetWindowText(Datum); } return 0; }
// struct thread1 { int m_ThreadStarte; }
ahh, ich könnt mich ein mein a**** beißen
-
struct-Deklarationen muss man mit einem Semikolon abschließen.
-
danke, geht aber trotzdem nicht...
jetztige fehlermeldungen:
e:\Christian\ProgrammierProjekt\EierUhr\EierUhrDlg.cpp(55): error C2612: Abschliessendes 'eingeben' in Initialisierungsliste für Basisklasse/Elemente nicht zulässig
e:\Christian\ProgrammierProjekt\EierUhr\EierUhrDlg.cpp(56): error C2601: 'CEierUhrDlg::DoDataExchange' : Lokale Funktionsdefinitionen sind unzulässig
e:\Christian\ProgrammierProjekt\EierUhr\EierUhrDlg.cpp(62): error C2601: 'CEierUhrDlg::GetThisMessageMap' : Lokale Funktionsdefinitionen sind unzulässig
e:\Christian\ProgrammierProjekt\EierUhr\EierUhrDlg.cpp(62): error C2601: 'CEierUhrDlg::GetMessageMap' : Lokale Funktionsdefinitionen sind unzulässig
e:\Christian\ProgrammierProjekt\EierUhr\EierUhrDlg.cpp(62): error C2655: 'CEierUhrDlg::messageMap' : Definition oder Neudeklaration im aktuellen Gültigkeitsbereich unzulässig
e:\Christian\ProgrammierProjekt\EierUhr\EierUhrDlg.cpp(62): error C2496: 'CEierUhrDlg::messageMap' : 'selectany' kann nur auf Daten mit externer Bindung angewendet werden
e:\Christian\ProgrammierProjekt\EierUhr\EierUhrDlg.cpp(62): error C2655: 'CEierUhrDlg::_messageEntries' : Definition oder Neudeklaration im aktuellen Gültigkeitsbereich unzulässig
e:\Christian\ProgrammierProjekt\EierUhr\EierUhrDlg.cpp(62): error C2496: 'CEierUhrDlg::_messageEntries' : 'selectany' kann nur auf Daten mit externer Bindung angewendet werden
e:\Christian\ProgrammierProjekt\EierUhr\EierUhrDlg.cpp(74): error C2601: 'CEierUhrDlg::OnInitDialog' : Lokale Funktionsdefinitionen sind unzulässig
e:\Christian\ProgrammierProjekt\EierUhr\EierUhrDlg.cpp(121): error C2601: 'CEierUhrDlg::OnSysCommand' : Lokale Funktionsdefinitionen sind unzulässig
e:\Christian\ProgrammierProjekt\EierUhr\EierUhrDlg.cpp(138): error C2601: 'CEierUhrDlg::OnPaint' : Lokale Funktionsdefinitionen sind unzulässig
e:\Christian\ProgrammierProjekt\EierUhr\EierUhrDlg.cpp(165): error C2601: 'CEierUhrDlg::OnQueryDragIcon' : Lokale Funktionsdefinitionen sind unzulässig
e:\Christian\ProgrammierProjekt\EierUhr\EierUhrDlg.cpp(170): error C2601: 'CEierUhrDlg::OnCbnSelchangeZeitvorgabe' : Lokale Funktionsdefinitionen sind unzulässig
e:\Christian\ProgrammierProjekt\EierUhr\EierUhrDlg.cpp(180): error C2601: 'CEierUhrDlg::thrCounter' : Lokale Funktionsdefinitionen sind unzulässig
e:\Christian\ProgrammierProjekt\EierUhr\EierUhrDlg.cpp(193): fatal error C1004: Unerwartetes Dateiende gefunden
-
hehe
//
struct thread1{int m_ThreadStarte;
}; <<--- hier auch nen Semikolon
Grüße
BOA