2905|5

79

帖子

0

TA的资源

一粒金砂(初级)

楼主
 

RAS拨号监视消息 [复制链接]

如何在RAS异步拨号时,得到当前拨号的状态,我写的消息和回调函数都可以在PC机上用,但在CE上都不能用(CE只支持消息),代码如下:消息的、
先注册了消息:
const   UINT   WM_RASEVENT   =   ::RegisterWindowMessage(_T(RASDIALEVENT));
然后配置消息:
BEGIN_MESSAGE_MAP(CGprsStateDlg, CDialog)
#if defined(_DEVICE_RESOLUTION_AWARE) && !defined(WIN32_PLATFORM_WFSP)
        ON_WM_SIZE()
#endif
        //}}AFX_MSG_MAP
        ON_REGISTERED_MESSAGE(WM_RASEVENT,OnRasDialEvent)
然后定义函数:
LRESULT CGprsStateDlg::OnRasDialEvent(WPARAM wp, LPARAM lp)
{
                RASCONNSTATE   rasstate =   (RASCONNSTATE)wp;   
            CDState cs;
                cs.DoModal();

       


        switch(rasstate)   
        {   
        case   RASCS_OpenPort:
                                cs.m_s  = _T("打开端口……");
  
                  break;   
        case   RASCS_PortOpened:  
                cs.m_s  = _T("端口已打开……");

                   break;   
        case   RASCS_ConnectDevice:   

                   break;   
        case   RASCS_DeviceConnected:
                AfxGetApp()->GetMainWnd()->GetDlgItem(IDC_STATIC_STATE)->SetWindowTextW(_T("设备已连接.…"));
                   //info→AddString(_T(″设备已连接.″));   
                   break;   
    case   RASCS_Authenticate:  
                cs.m_s  = _T("验证用户及密码……");
          
                   break;   
    case   RASCS_Authenticated:   
                   info→AddString(_T(″通过″));   
                   break;   
        case   RASCS_Connected:
                cs.m_s  = _T("已连接");
          
                   break;   
        case   RASCS_Disconnected:   

                   m_hRasConn=NULL;     
                   break;   
        default:   
                   return   (LRESULT)0;   
        }   

        //cs.EndDialog(5);
    return   (LRESULT)0;
}

然后开始拨号:
                RASDIALPARAMS rdParams;
        m_hRasConn = NULL;
        //初始化变量
        rdParams.dwSize = sizeof(RASDIALPARAMS);
        wcscpy(rdParams.szEntryName,_T("我的连接"));//_T("我的连接")//lpszName
        wcscpy(rdParams.szPhoneNumber,_T("*99***1#"));
        wcscpy(rdParams.szCallbackNumber,_T("*"));
        wcscpy(rdParams.szUserName,_T(""));
        wcscpy(rdParams.szPassword,_T(""));
        wcscpy(rdParams.szDomain,_T(""));

        DWORD dwRet;

        //dwRet = RasDial(NULL,NULL,&rdParams,0L,RasDialFunc,&m_hRasConn);//异步回调
        dwRet = RasDial(NULL,NULL,&rdParams,0xFFFFFFFF,this->m_hWnd,&m_hRasConn); //异步消息

        if ( dwRet != 0 )
        {

                RasHangUp(m_hRasConn);
                return;
        }
       

        return ;
}
可是无法得到当前状态,但在PC机上,一样的代码是正确无误的。请各位高手大牛指点。

最新回复

学习了啊,谢谢哈   详情 回复 发表于 2009-12-4 10:50
点赞 关注

回复
举报

60

帖子

0

TA的资源

一粒金砂(初级)

沙发
 
看不出问题,帮你顶下。
 
 

回复

69

帖子

0

TA的资源

一粒金砂(初级)

板凳
 
想得到当前的拨号状态,可以通过PreTranslateMessage(MSG* pMsg)函数来截获消息。PreTranslateMessage()可以再TranslateMessage()之前截获消息并处理。RAS状态变化的时候就会发送WM_RASDIALEVENT消息,我们截获该消息后判断是否连接上等待。示例代码如下:
BOOL CM2M_eVCDlg::PreTranslateMessage(MSG* pMsg)
{
        // TODO: Add your specialized code here and/or call the base class
        if(pMsg->message == WM_RASDIALEVENT)
       {
         switch(pMsg->wParam)
                {
         case RASCS_Connected:
                         {
                                MessageBox(TEXT("RASCS_Connected"),
                                TEXT("RASCS_Connected"),MB_OK);
                                       }
                         break;
                         }

         case RASCS_Disconnected:
                         {
                         MessageBox(TEXT("RASCS_Disconnected"),
                         TEXT("RASCS_Disconnected"),MB_OK);
                         break;
                         }
         default:
              break;
          }
}
我测试过时成功的。回调函数的那种我没试过。
 
 
 

回复

74

帖子

0

TA的资源

一粒金砂(初级)

4
 
谢谢楼上的高手。我一会试一下。非常感谢。
 
 
 

回复

71

帖子

0

TA的资源

一粒金砂(初级)

5
 
非常好,我测试成功了,再次感谢,呵呵。马上结帐。
 
 
 

回复

73

帖子

0

TA的资源

一粒金砂(初级)

6
 
学习了啊,谢谢哈
 
 
 

回复
您需要登录后才可以回帖 登录 | 注册

随便看看
查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
关闭
站长推荐上一条 1/10 下一条

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 国产芯 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved
快速回复 返回顶部 返回列表