MFC中的DLG.h文件里我想增加一个全局变量sock,已经包含进去了“sock.h”文件,但是运行时告诉我错误,缺少类型说明符。源码如下:// simpleSMTPDlg.h : 头文件
//
#pragma once
#include "afxwin.h"
#include "simpleSMTPsock.h"
// CsimpleSMTPDlg 对话框
class CsimpleSMTPDlg : public CDialogEx
{
// 构造
public:
CsimpleSMTPDlg(CWnd* pParent = NULL); // 标准构造函数
simpleSMTPsock Mysock;
CString m_serverdiary;
CString m_mailcontext;
CStatic bmp;
// 对话框数据
enum { IDD = IDD_SIMPLESMTP_DIALOG };
protected:
virtual void DoDataExchange(CDataExchange* pDX); // DDX/DDV 支持
// 实现
protected:
HICON m_hIcon;
// 生成的消息映射函数
virtual BOOL OnInitDialog();
afx_msg void OnSysCommand(UINT nID, LPARAM lParam);
afx_msg void OnPaint();
afx_msg HCURSOR OnQueryDragIcon();
DECLARE_MESSAGE_MAP()
public:
CEdit m_server;
CEdit m_mail;
};
7 个解决方案
#1
你的sock.h文件如何定义的?
#2
DLG.h与simpleSMTPsock.h什么关系?
CsimpleSMTPDlg 这个类的头文件是simpleSMTPsock.h吗?
DLG.h在什么地方被#include的?stdafx.h里面?
CsimpleSMTPDlg 这个类的头文件是simpleSMTPsock.h吗?
DLG.h在什么地方被#include的?stdafx.h里面?
#3
sock.h是基于CAsyncSocket类的一个套接字,里面我只重载了函数receive()和accept().
DLG.h是基于对话框的。
DLG.h是基于对话框的。
#4
我想你是定义错误或不知道Socket如何定义,请参考实例
引用处
#pragma once
class CCommThread;
// CMySocket 命令目标
class CMySocket : public CSocket
{
public:
CMySocket();
virtual ~CMySocket();
public:
void GetDlg(CCommThread * dlg);
CCommThread* m_dlg;
virtual void OnConnect(int nErrorCode);
virtual void OnReceive(int nErrorCode);
virtual void OnClose(int nErrorCode);
};
引用处
#pragma once
#include "MySocket.h"
class CRWFlash;
// CCommThread
// 通信线程
class CCommThread : public CWinThread
{
DECLARE_DYNCREATE(CCommThread)
protected:
CCommThread(); // 动态创建所使用的受保护的构造函数
virtual ~CCommThread();
……
private:
// SOCKET类
CMySocket *m_ClientSocket;
……
};
#5
有可能。是用MFC自动生成的,最后因为着急交,于是我重新建了个工程以后就好了。感谢。
#6
你的simpleSMTPsock类又是如何定义的呢?
#7
#pragma once
#include "simpleSMTPDlg.h"
// simpleSMTPsock 命令目标
class simpleSMTPsock : public CAsyncSocket
{
public:
simpleSMTPsock();
virtual ~simpleSMTPsock();
virtual void OnReceive(int nErrorCode);
virtual void OnAccept(int nErrorCode);
CString data;
bool Isdata;
bool Quit;
bool Isbmp;
CString attachment;
CString dlgdir, serverdiary;//对话框之前的已经记录的日志和即将要生成的日志
};
#include "simpleSMTPDlg.h"
// simpleSMTPsock 命令目标
class simpleSMTPsock : public CAsyncSocket
{
public:
simpleSMTPsock();
virtual ~simpleSMTPsock();
virtual void OnReceive(int nErrorCode);
virtual void OnAccept(int nErrorCode);
CString data;
bool Isdata;
bool Quit;
bool Isbmp;
CString attachment;
CString dlgdir, serverdiary;//对话框之前的已经记录的日志和即将要生成的日志
};
#1
你的sock.h文件如何定义的?
#2
DLG.h与simpleSMTPsock.h什么关系?
CsimpleSMTPDlg 这个类的头文件是simpleSMTPsock.h吗?
DLG.h在什么地方被#include的?stdafx.h里面?
CsimpleSMTPDlg 这个类的头文件是simpleSMTPsock.h吗?
DLG.h在什么地方被#include的?stdafx.h里面?
#3
sock.h是基于CAsyncSocket类的一个套接字,里面我只重载了函数receive()和accept().
DLG.h是基于对话框的。
DLG.h是基于对话框的。
#4
我想你是定义错误或不知道Socket如何定义,请参考实例
引用处
#pragma once
class CCommThread;
// CMySocket 命令目标
class CMySocket : public CSocket
{
public:
CMySocket();
virtual ~CMySocket();
public:
void GetDlg(CCommThread * dlg);
CCommThread* m_dlg;
virtual void OnConnect(int nErrorCode);
virtual void OnReceive(int nErrorCode);
virtual void OnClose(int nErrorCode);
};
引用处
#pragma once
#include "MySocket.h"
class CRWFlash;
// CCommThread
// 通信线程
class CCommThread : public CWinThread
{
DECLARE_DYNCREATE(CCommThread)
protected:
CCommThread(); // 动态创建所使用的受保护的构造函数
virtual ~CCommThread();
……
private:
// SOCKET类
CMySocket *m_ClientSocket;
……
};
#5
有可能。是用MFC自动生成的,最后因为着急交,于是我重新建了个工程以后就好了。感谢。
#6
你的simpleSMTPsock类又是如何定义的呢?
#7
#pragma once
#include "simpleSMTPDlg.h"
// simpleSMTPsock 命令目标
class simpleSMTPsock : public CAsyncSocket
{
public:
simpleSMTPsock();
virtual ~simpleSMTPsock();
virtual void OnReceive(int nErrorCode);
virtual void OnAccept(int nErrorCode);
CString data;
bool Isdata;
bool Quit;
bool Isbmp;
CString attachment;
CString dlgdir, serverdiary;//对话框之前的已经记录的日志和即将要生成的日志
};
#include "simpleSMTPDlg.h"
// simpleSMTPsock 命令目标
class simpleSMTPsock : public CAsyncSocket
{
public:
simpleSMTPsock();
virtual ~simpleSMTPsock();
virtual void OnReceive(int nErrorCode);
virtual void OnAccept(int nErrorCode);
CString data;
bool Isdata;
bool Quit;
bool Isbmp;
CString attachment;
CString dlgdir, serverdiary;//对话框之前的已经记录的日志和即将要生成的日志
};