Hilfe! Probleme mit Socket-Programm
-
Hallo Leute!
Ich brauche dringend eure Hilfe!
Ich weis einfach nicht, warum die folgenden Dateien nicht korrekt
kompiliert werden können.**
--------------------Konfiguration: NetChat - Win32 Debug--------------------
Kompilierung läuft...
NetChatDlg.cpp
MySocket.cpp
MySocket.cpp(38) : error C2039: 'SetParent' : Ist kein Element von 'CMySocket'
mysocket.h(15) : Siehe Deklaration von 'CMySocket'
MySocket.cpp(40) : error C2065: 'm_pWnd' : nichtdeklarierter Bezeichner
MySocket.cpp(40) : error C2440: '=' : 'class CDialog *' kann nicht in 'int' konvertiert werden
Diese Konvertierung erfordert einen reinterpret_cast-Operator oder eine Typumwandlung im C- oder Funktionsformat
MySocket.cpp(49) : error C2065: 'CSocketDlg' : nichtdeklarierter Bezeichner
MySocket.cpp(49) : error C2059: Syntaxfehler : ')'
MySocket.cpp(58) : error C2248: "OnAccept" : Kein Zugriff auf private Element, dessen Deklaration in der Klasse "CNetChatDlg" erfolgte
netchatdlg.h(49) : Siehe Deklaration von 'OnAccept'
**Hoffe, ihr könnt mir weiterhelfen
THX
MySocket.cpp
// MySocket.cpp: Implementierungsdatei // #include "stdafx.h" #include "NetChat.h" #include "MySocket.h" #include "NetChatDlg.h" #ifdef _DEBUG #define new DEBUG_NEW #undef THIS_FILE static char THIS_FILE[] = __FILE__; #endif ///////////////////////////////////////////////////////////////////////////// // CMySocket CMySocket::CMySocket() { } CMySocket::~CMySocket() { } //Die folgenden Zeilen nicht bearbeiten. Sie werden vom Klassen-Assistenten benötigt. #if 0 BEGIN_MESSAGE_MAP(CMySocket, CAsyncSocket) //{{AFX_MSG_MAP(CMySocket) //}}AFX_MSG_MAP END_MESSAGE_MAP() #endif // 0 ///////////////////////////////////////////////////////////////////////////// // Member-Funktion CMySocket void CMySocket::SetParent(CDialog *pWnd) { m_pWnd = pWnd; } void CMySocket::OnConnect(int nErrorCode) { // Sind Fehler aufgetreten? if (nErrorCode == 0) // Nein, OnAccept-Funktion des Dialogfelds aufrufen ((CSocketDlg*)m_pWnd)->OnConnect(); } void CMySocket::OnAccept(int nErrorCode) { // Sind Fehler aufgetreten? if (nErrorCode == 0) // Nein, OnAccept-Funktion des Dialogfelds aufrufen ((CNetChatDlg*)m_pWnd)->OnAccept(); } void CMySocket::OnSend(int nErrorCode) { // Sind Fehler aufgetreten? if (nErrorCode == 0) // Nein, OnAccept-Funktion des Dialogfelds aufrufen ((CNetChatDlg*)m_pWnd)->OnSend(); } void CMySocket::OnReceive(int nErrorCode) { // Sind Fehler aufgetreten? if (nErrorCode == 0) // Nein, OnAccept-Funktion des Dialogfelds aufrufen ((CNetChatDlg*)m_pWnd)->OnReceive(); } void CMySocket::OnClose(int nErrorCode) { // Sind Fehler aufgetreten? if (nErrorCode == 0) // Nein, OnAccept-Funktion des Dialogfelds aufrufen ((CNetChatDlg*)m_pWnd)->OnClose(); }MySocket.h
#if !defined(AFX_MYSOCKET_H__8ED834E0_66D9_11D8_86FF_0030F1A2113D__INCLUDED_) #define AFX_MYSOCKET_H__8ED834E0_66D9_11D8_86FF_0030F1A2113D__INCLUDED_ #if _MSC_VER > 1000 #pragma once #endif // _MSC_VER > 1000 // MySocket.h : Header-Datei // ///////////////////////////////////////////////////////////////////////////// // Befehlsziel CMySocket class CMySocket : public CAsyncSocket { // Attribute public: // Operationen public: CMySocket(); virtual ~CMySocket(); // Überschreibungen public: // Vom Klassen-Assistenten generierte virtuelle Funktionsüberschreibungen //{{AFX_VIRTUAL(CMySocket) //}}AFX_VIRTUAL // Generierte Nachrichtenzuordnungsfunktionen //{{AFX_MSG(CMySocket) // HINWEIS - Der Klassen-Assistent fügt hier Member-Funktionen ein und entfernt diese. //}}AFX_MSG // Implementierung protected: virtual void OnSend(int nErrorCode); virtual void OnReceive(int nErrorCode); virtual void OnClose(int nErrorCode); virtual void OnConnect(int nErrorCode); virtual void OnAccept(int ErrorCode); }; ///////////////////////////////////////////////////////////////////////////// //{{AFX_INSERT_LOCATION}} // Microsoft Visual C++ fügt unmittelbar vor der vorhergehenden Zeile zusätzliche Deklarationen ein. #endif // AFX_MYSOCKET_H__8ED834E0_66D9_11D8_86FF_0030F1A2113D__INCLUDED_NetChatDlg.h
// NetChatDlg.h : Header-Datei // #if !defined(AFX_NETCHATDLG_H__EDECAC44_662A_11D8_86FF_0030F1A2113D__INCLUDED_) #define AFX_NETCHATDLG_H__EDECAC44_662A_11D8_86FF_0030F1A2113D__INCLUDED_ #include "MySocket.h" // Hinzugefügt von der Klassenansicht #if _MSC_VER > 1000 #pragma once #endif // _MSC_VER > 1000 ///////////////////////////////////////////////////////////////////////////// // CNetChatDlg Dialogfeld class CNetChatDlg : public CDialog { // Konstruktion public: void OnClose(); void OnReceive(); void OnSend(); void OnConnect(); CNetChatDlg(CWnd* pParent = NULL); // Standard-Konstruktor // Dialogfelddaten //{{AFX_DATA(CNetChatDlg) enum { IDD = IDD_NETCHAT_DIALOG }; CString m_ip; int m_port; //}}AFX_DATA // Vom Klassenassistenten generierte Überladungen virtueller Funktionen //{{AFX_VIRTUAL(CNetChatDlg) protected: virtual void DoDataExchange(CDataExchange* pDX); // DDX/DDV-Unterstützung //}}AFX_VIRTUAL // Implementierung protected: HICON m_hIcon; // Generierte Message-Map-Funktionen //{{AFX_MSG(CNetChatDlg) virtual BOOL OnInitDialog(); afx_msg void OnPaint(); afx_msg HCURSOR OnQueryDragIcon(); //}}AFX_MSG DECLARE_MESSAGE_MAP() private: void OnAccept(); CMySocket m_sConnectSocket; CMySocket m_sListenSocket; }; //{{AFX_INSERT_LOCATION}} // Microsoft Visual C++ fügt unmittelbar vor der vorhergehenden Zeile zusätzliche Deklarationen ein. #endif // !defined(AFX_NETCHATDLG_H__EDECAC44_662A_11D8_86FF_0030F1A2113D__INCLUDED_)
-
Hallo,
sorry, aber das paßt alles nicht zusammen. Es gibt kein SetParent und kein Member m_pWnd in der MySocket.h, und auch wenn es das gäbe, wäre es vom Design her fragwürdig, warum ein CMySocket-Objekt einen Parent(ein Window) haben soll. Es gibt auch keinen CSocketDlg, ich sehe jedenfalls keinen. Du kannst also die fehlenden Member in MySocket.h hinzufügen, was CSocketDlg sein soll(vielleicht ein CNetChatDlg?), weiß ich allerdings nicht. Außerdem kann nicht auf OnAccept zugegriffen werden, weil dies eine private Member-Funktion von CNetChatDlg ist.
MfG
-
Sieh dir das Bsp. aus VC++ 6 in 21 Tagen nochmal genau an. Bitte richtig Abschreiben.