初学MFC新手,恳请指教解决此问题// ServerDlg.h : header file
//#if !defined(AFX_SERVERDLG_H__F746622A_2931_47D4_BBC3_17DA89A10855__INCLUDED_)
#define AFX_SERVERDLG_H__F746622A_2931_47D4_BBC3_17DA89A10855__INCLUDED_#if _MSC_VER > 1000
#pragma once
#endif // _MSC_VER > 1000/////////////////////////////////////////////////////////////////////////////
// CServerDlg dialog
#include "afxcmn.h"
#include "prop1.h"
#include "prop2.h"
#include "prop3.h"
#include "SessionSocket.h"
#include "ListenSocket.h"class CMsg;//消息类声明
class CServerDlg : public CDialog
{
// Construction
public:
CServerDlg(CWnd* pParent = NULL); // standard constructor// Dialog Data
//{{AFX_DATA(CServerDlg)
enum { IDD = IDD_SERVER_DIALOG };
CButton m_btnStop;
CButton m_btnStart;
CIPAddressCtrl m_IP;
CStatic m_staNum;
CString m_ShowMsg;
UINT m_uPort;
//}}AFX_DATA // ClassWizard generated virtual function overrides
//{{AFX_VIRTUAL(CServerDlg)
protected:
virtual void DoDataExchange(CDataExchange* pDX); // DDX/DDV support
//}}AFX_VIRTUAL// Implementation
protected:
HICON m_hIcon; // Generated message map functions
//{{AFX_MSG(CServerDlg)
virtual BOOL OnInitDialog();
afx_msg void OnSysCommand(UINT nID, LPARAM lParam);
afx_msg void OnPaint();
afx_msg HCURSOR OnQueryDragIcon();
afx_msg void OnButtonStart();
afx_msg void OnButtonStop();
//}}AFX_MSG
DECLARE_MESSAGE_MAP()
public:
CPtrList m_connList;//连接列表
CListenSocket *m_pListenSocket;//监听Socket指针变量
CString m_sMsgList;//储存历史消息的变量
public:
void ToClients(CMsg *pMsg);//向已连接的客户端转发消息
void OnAccept();//接受连接请求
void OnReceive(CSessionSocket *pSocket);//获取客户端发送的消息
afx_msg void OnTcnSelchangeTab1(NMHDR *pNMHDR, LRESULT *pResult);
    CTabCtrl m_tabctrl;   <================添加这句之后回出现错误,跳出一个警告窗口
                                                  1--------------------------------------------------1
}                                                 1  Server.exe 中的 0x7c9302db 处未处理的异常                 异                                                1  0xC0000005:写入位置 0x00030ffc 时发生访问冲突   1
                                                  1--------------------------------------------------1
没有CTabCtrl m_tabctrl; 的,可以正常运行。
这是要实现的功能界面,新手很粗糙,见笑了。就是在通讯的基础上,添加tabcontrol控件,会有错误。
但是分页和通讯代码都可以单独运行。
分页功能

解决方案 »

  1.   

    你应该是在cpp文件中直接使用了m_tabctrl吧
    你应该创建或者用DoDataExchange绑定后再使用
      

  2.   


    void CServerDlg::DoDataExchange(CDataExchange* pDX)
    {
    CDialog::DoDataExchange(pDX);
    //{{AFX_DATA_MAP(CServerDlg)
    DDX_Control(pDX, IDC_BUTTON_STOP, m_btnStop);
    DDX_Control(pDX, IDC_BUTTON_START, m_btnStart);
    DDX_Control(pDX, IDC_IPADDRESS, m_IP);
    DDX_Control(pDX, IDC_STATIC_NUM, m_staNum);
    DDX_Text(pDX, IDC_SHOWMSG, m_ShowMsg);
    DDX_Text(pDX, IDC_EDIT_PORT, m_uPort);
    }
    cpp文件中绑定了。
      

  3.   

    CTabCtrl m_tabctrl;  现在最关键的问题就是我不能声明 CTabCtrl m_tabctrl;  public: 
    void ToClients(CMsg *pMsg);//向已连接的客户端转发消息 
    void OnAccept();//接受连接请求 
    void OnReceive(CSessionSocket *pSocket);//获取客户端发送的消息 
    afx_msg void OnTcnSelchangeTab1(NMHDR *pNMHDR, LRESULT *pResult); 
        CTabCtrl m_tabctrl;觉得3个定义的函数,和控件的函数放在一起声明是冲突了吗??有什么好的解决办法。