首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > VC/MFC >

在初始化时定义了CSocket m_socSend;为什么说在ontimer中没有定义m_socSend解决方案

2012-01-19 
在初始化时定义了CSocket m_socSend为什么说在ontimer中没有定义m_socSend#includestdafx.h #includec

在初始化时定义了CSocket m_socSend;为什么说在ontimer中没有定义m_socSend
#include   "stdafx.h "
#include   "c_sever.h "
#include   "c_severDlg.h "

#ifdef   _DEBUG
#define   new   DEBUG_NEW
#undef   THIS_FILE
static   char   THIS_FILE[]   =   __FILE__;
#endif

/////////////////////////////////////////////////////////////////////////////
//   CAboutDlg   dialog   used   for   App   About

class   CAboutDlg   :   public   CDialog
{
public:
CAboutDlg();

//   Dialog   Data
//{{AFX_DATA(CAboutDlg)
enum   {   IDD   =   IDD_ABOUTBOX   };
//}}AFX_DATA

//   ClassWizard   generated   virtual   function   overrides
//{{AFX_VIRTUAL(CAboutDlg)
protected:
virtual   void   DoDataExchange(CDataExchange*   pDX);         //   DDX/DDV   support
//}}AFX_VIRTUAL

//   Implementation
protected:
//{{AFX_MSG(CAboutDlg)
//}}AFX_MSG
DECLARE_MESSAGE_MAP()
};

CAboutDlg::CAboutDlg()   :   CDialog(CAboutDlg::IDD)
{
//{{AFX_DATA_INIT(CAboutDlg)
//}}AFX_DATA_INIT
}

void   CAboutDlg::DoDataExchange(CDataExchange*   pDX)
{
CDialog::DoDataExchange(pDX);
//{{AFX_DATA_MAP(CAboutDlg)
//}}AFX_DATA_MAP
}

BEGIN_MESSAGE_MAP(CAboutDlg,   CDialog)
//{{AFX_MSG_MAP(CAboutDlg)
//   No   message   handlers
//}}AFX_MSG_MAP
END_MESSAGE_MAP()

/////////////////////////////////////////////////////////////////////////////
//   CC_severDlg   dialog

CC_severDlg::CC_severDlg(CWnd*   pParent   /*=NULL*/)
:   CDialog(CC_severDlg::IDD,   pParent)
{
//{{AFX_DATA_INIT(CC_severDlg)
//   NOTE:   the   ClassWizard   will   add   member   initialization   here
//}}AFX_DATA_INIT
//   Note   that   LoadIcon   does   not   require   a   subsequent   DestroyIcon   in   Win32
m_hIcon   =   AfxGetApp()-> LoadIcon(IDR_MAINFRAME);
}

void   CC_severDlg::DoDataExchange(CDataExchange*   pDX)
{
CDialog::DoDataExchange(pDX);
//{{AFX_DATA_MAP(CC_severDlg)
//   NOTE:   the   ClassWizard   will   add   DDX   and   DDV   calls   here
//}}AFX_DATA_MAP
}

BEGIN_MESSAGE_MAP(CC_severDlg,   CDialog)
//{{AFX_MSG_MAP(CC_severDlg)
ON_WM_SYSCOMMAND()
ON_WM_PAINT()
ON_WM_QUERYDRAGICON()
ON_WM_TIMER()
//}}AFX_MSG_MAP
END_MESSAGE_MAP()

/////////////////////////////////////////////////////////////////////////////
//   CC_severDlg   message   handlers

BOOL   CC_severDlg::OnInitDialog()
{
CDialog::OnInitDialog();

CSocket   m_socSend;
        m_socSend.Create(6800,SOCK_DGRAM,NULL);
m_socSend.Bind(6800, "127.0.0.1 ");
SetTimer(1,3000,NULL);

//   Add   "About... "   menu   item   to   system   menu.

//   IDM_ABOUTBOX   must   be   in   the   system   command   range.
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);
}
}

//   Set   the   icon   for   this   dialog.     The   framework   does   this   automatically
//     when   the   application 's   main   window   is   not   a   dialog
SetIcon(m_hIcon,   TRUE);//   Set   big   icon
SetIcon(m_hIcon,   FALSE);//   Set   small   icon

//   TODO:   Add   extra   initialization   here

return   TRUE;     //   return   TRUE     unless   you   set   the   focus   to   a   control
}

void   CC_severDlg::OnSysCommand(UINT   nID,   LPARAM   lParam)
{
if   ((nID   &   0xFFF0)   ==   IDM_ABOUTBOX)
{
CAboutDlg   dlgAbout;
dlgAbout.DoModal();
}
else
{
CDialog::OnSysCommand(nID,   lParam);
}
}

//   If   you   add   a   minimize   button   to   your   dialog,   you   will   need   the   code   below
//     to   draw   the   icon.     For   MFC   applications   using   the   document/view   model,
//     this   is   automatically   done   for   you   by   the   framework.

void   CC_severDlg::OnPaint()  
{
if   (IsIconic())
{
CPaintDC   dc(this);   //   device   context   for   painting

SendMessage(WM_ICONERASEBKGND,   (WPARAM)   dc.GetSafeHdc(),   0);

//   Center   icon   in   client   rectangle
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;

//   Draw   the   icon
dc.DrawIcon(x,   y,   m_hIcon);
}
else
{
CDialog::OnPaint();
}
}

//   The   system   calls   this   to   obtain   the   cursor   to   display   while   the   user   drags
//     the   minimized   window.
HCURSOR   CC_severDlg::OnQueryDragIcon()
{
return   (HCURSOR)   m_hIcon;
}

void   CC_severDlg::OnTimer(UINT   nIDEvent)  
{

static   iIndex=0;
char   szSend[20];
sprintf(szSend, "%010d ",iIndex++);
int   iSend=m_socSend.SendTo(szSend,10,6801, "127.0.0.1 ",0);
}


[解决办法]
CSocket m_socSend 应该定义成CC_severDlg的类成员变量
现在只是CC_severDlg::OnInitDialog()的局部变量,所以在ontimer
中不能访问
[解决办法]
正解

热点排行