WEB开发网
开发学院软件开发VC 用VC++编写 网络计时计费工具 阅读

用VC++编写 网络计时计费工具

 2008-11-13 19:30:22 来源:WEB开发网   
核心提示: 别忘了在NetTimerDlg.h里定义函数:afx_msg void OnNcWPARAM wParam ,LPARAM lParam同时在NetTimerDlg.cpp的BEGIN_MESSAGE_MAPCNetTimerDlg,用VC++编写 网络计时计费工具(3),CDialo

别忘了在NetTimerDlg.h里定义函数:

afx_msg void OnNcWPARAM wParam ,LPARAM lParam

同时在NetTimerDlg.cpp的BEGIN_MESSAGE_MAPCNetTimerDlg,CDialog和BEGIN_MESSAGE_MAPCNetTimerDlg,CDialog之间插入ON_MESSAGEWM_NC,OnNc,用来申明对该消息的响应函数为OnNc。

下面在CNetTimerDlg的OnInitDialog函数后部return TRUE语句前加入

SetTimer1100 NULL //设置一个时钟 编号是1 每过1秒钟响应一次。

用ClassWizard为WM_TIMER加一个响应函数 代码如下

  void CNetTimerDlgOnTimerUINT nIDEvent
   m_bConnected = InternetGetConnectedStateflags NULL //判断是否连网的API
  ifm_bConnected //如果连网
  OnConnected//处理连网情况下的函数
  else//如果没有连网
  OnDisconnected//处理未连网情况下的函数
  CDialogOnTimernIDEvent

以上代码中的InternetGetConnectedState是一个API函数,用来判断当前是否处于连网状态。它的第一个参数是一个指向DWORD类型的指针,用于接收上网方式的信息。第二个参数由系统保留,指定为NULL。

由于我们用到了有关网络的函数 所以在文件头部得添加一句

#include ″afxinet.h″

接下去分别定义OnConnected和OnDisconnected函数:

  void CNetTimerDlgOnConnected
   int hour = 0//定义小时 分 秒
  int minute = 0
  int second =0
  if m_iTime < 60 //如果总的时间小于60秒...
   hour = 0
  minute =0
  second = m_iTime
  if m_iTime >=60&& m_iTime < 3600//如果大于等于60小于3600
   hour = 0
  minute = m_iTime / 60
  second = m_iTime - minute  60
  if m_iTime >= 3600 //如果大于等于3600
   hour = m_iTime / 3600
  minute = m_iTime - hour  3600 / 60
  second = m_iTime -60  minute -3600  hour
  m_iTime ++//累加
  m_strTime.Format″%d小时 %d分 %d秒″ hour minute second //格式化数据
  SetDlgItemTextIDC_EDIT_SHOWTIME m_strTime//显示连网时间
  switchflags //判断以什么方式上网
   case INTERNET_CONNECTION_MODEM//拨号上网
  SetDlgItemTextIDC_EDIT_METHOD ″拨号上网″
  break
  case INTERNET_CONNECTION_LAN//通过局域网上网
  SetDlgItemTextIDC_EDIT_METHOD ″通过局域网上网″
  break
  case INTERNET_CONNECTION_PROXY //通过代理服务器
  SetDlgItemTextIDC_EDIT_METHOD ″通过代理服务器上网″
  break
  case INTERNET_CONNECTION_MODEM_BUSY//Modem忙于其他
  SetDlgItemTextIDC_EDIT_METHOD ″Modem正忙 但不是上网″
  break
  double value//以下用于显示上网费用
  m_strFee = AfxGetApp ->GetProfileString″Fee section″ ″fee″ NULL
  //得到保存在文件中的相应数据
  value = atofm_strFee
  //调用atof函数将文字信息转化为double类型
  value = value  m_iTime / 3600
  m_strFee.Format″%lf元″ value
  SetDlgItemTextIDC_EDIT_FEE m_strFee
  //显示费用
  void CNetTimerDlgOnDisconnected
   SetDlgItemTextIDC_EDIT_SHOWTIME ″未连接″//在编辑框中显示“非连接”
  m_iTime = 0

然后分别在NetTimerDlg.h中定义如下

  public
  void OnDisconnected
  void OnConnected
  下一步为ID号为IDD_DIALOG1的对话框建立一个新类CFeeDlg 并且在NetTimerDlg.cpp头部添加
  #include ″FeeDlg.h″

然后为它的“确定”按钮添加响应函数如下

  void CFeeDlgOnOK
   CString text
  GetDlgItemTextIDC_EDIT_YUAN text//获取编辑框IDC_EDIT_YUAN中的输入:
  AfxGetApp ->WriteProfileString″Fee section″ ″fee″ text//写入文件
  CDialogOnOK


然后回过头来为CNetTimerDlg的“设置”按钮添加响应函数如下

  void CNetTimerDlgOnButtonSetup
   CFeeDlg FeeDlg
  FeeDlg.DoModal

最后 别忘了做一些必要的编译设置 因为我们用到了wininet.lib库 所以要在“工程/设置”菜单下的link选项卡里将“对象/库模块”一项设为Wininet.lib。

OK 最后到网上下载个漂亮的图标替代VC默认的那个图标 编译工程文件 一个属于你自己的网络计时工具就产生了以后在上网时使用这个工具 只要输入ISP的每小时收费值,在任何时候,只要用鼠标点出系统托盘区的程序主窗口,就能对自己的上网时间和费用一目了然了。

注:文本程序在Windows 98 Visual C++6.0下通过。

上一页  1 2 3 

Tags:VC 编写 网络

编辑录入:爽爽 [复制链接] [打 印]
赞助商链接