回家念经(kv300)--编程之禅

程序不过是梦,生于无形无象的禅中,我们只是那做梦的人。

用户操作
[即时聊天] [发私信] [加为好友]
回家念经ID:kvw3000
76652次访问,排名1448,好友0人,关注者0人。
kvw3000的文章
原创 52 篇
翻译 0 篇
转载 0 篇
评论 137 篇
回家念经的公告

个人简介
网名:回家念经(kv300)
QQ:107336063
MSN:kvw3000@hotmail.com

来自:西安
------------------------
访问量:
------------------------

今日天气

最近评论
cqg1220:机柜
tipfoo:GTK+ 在 win32 上需要装个 GTK 运行时环境,这或许不是你想要的。
shepher:请问,我用你说的这个方式每次打开的时候为什么都要弹出数据库连接框要求输入用户名密码啊
shanfeng888:同楼上的,我也在这个路口上.

Yibans:TJ软院大二路过。。。 看来是篇好文,可惜没有时间细看。。。这里还有本1166页的大家伙没看完。。。
文章分类
收藏
相册
回家念经
签名图
友情链接
CSDN技术社区
jiangsheng的专栏
Nicrosoft's Blog
VC知识库
回家念经相册
我在CSDN发表的文章
猫扑
西北工业大学
存档
软件项目交易
订阅我的博客
XML聚合  FeedSky
订阅到鲜果
订阅到Google
订阅到抓虾
订阅到BlogLines
订阅到Yahoo
订阅到GouGou
订阅到飞鸽
订阅到Rojo
订阅到newsgator
订阅到netvibes

原创 用VC++6.0编写拨号程序收藏

新一篇: 用VC++实现软件的多语种支持 | 旧一篇: 对论坛中有关数据类型转换的总结

用VC++6.0编写拨号程序 作者:陈晓东 发布时间:2001/05/22 
 
 
 
文章摘要:
  本文利用visual c++6.0给出了一个拨号程序的实现,可以作为VC学习者编程实践的范例。 
        

--------------------------------------------------------------------------------
 
正文:   

用VC++6.0编写拨号程序   
  拨号上网是编写网络应用软件常用的操作,程序在运行某些远程网上操作前,需要先拨号与网络连接,完成操作后由必须收线断开。在Windows 95/98的"拨号网络"中,虽然提供拨号功能,但无法直接让自己开发的应用程序来调。而在系统注册的常用的控件当中又没有提供。
  本方法是利用VC++制作一个拨号控件,提供拨号与收线功能。VC++ 6.00提供控件的创建引导(MFC ActiveX ControlWizard)可以快速生成ActiveX 控件的程序框架。拨号功能是由VC++提供的 rasapi32.lib 的函数库支持的,函数及变量在 ras.h 文件头定义。函数RasDial()实现拨号功能,RasHangUp()用来终止拨号连接。函数调用方法:
DWORD dwRet = RasDial( NULL, NULL,
&rdParams, 0L, NULL, &hRasConn );
DWORD dwRet = RasHangUp( hRasConn );
其中:
rdParams 为 RASDIALPARAMS 结构,
主要参数定义如下:
DWORD dwSize 结构变量的大小;
TCHAR szEntryName[] 拨号网络中建立的连接名;
TCHAR szPhoneNumber[] 电话号码,
若采用 szEntryName 中定义的号码,置为NULL 值;
CHAR szCallbackNumber[] 回拨号码,不用时置为NULL;
TCHAR szUserName[] 用户名;
TCHAR szPassword[] 用户口令;
TCHAR szDomain[] 用户权限验证域,
若为'*'采用szEntryName 中定义的域进行验证。
HRasConn 是 HRASCONN 结构,作远程拨号连接句柄。

一、 建立工程项目

  启动CV++集成开发环境,打开"New"对话框,选中Projects中的 "MFC ActiveX Control Wizard", 在Project name 项输入"Dialer" ,在Location 项会生成相应的路径。单击OK钮进入第二步,保留默认值。单击Next 进入最后一步,选中 Invisible at run time (运行时窗口不可见),其余保持默认。按Finish 钮,弹出一个信息对话框,按OK钮完成工程项的创建。

二、修改控件图标

  工程项自动生成一个15 X 15 Bitmap 的位图,该图将在VB 的资源工具箱中显示为一个图标。实际上图标可以显示到 25 X 25 大小尺寸的位图。您需要将该位图改为自己的位图。VC++集成开发环境提供绘图工具让您修改。

三、 制控件界面

  在应用程序设计时,嵌入的控件会显示一个界面。工程项创建时自动生成一个椭圆例图。在这里我们要去掉画椭圆的代码,并增加如下代码来限制控件窗口的大小及画出控件设计时的显示图标:
void CDialerCtrl::OnDraw(CDC* pdc,
const CRect& rcBounds, const CRect& rcInvalid)
{
// TODO: Replace the following code
with your own drawing code.
//pdc- >FillRect(rcBounds,CBrush::FromHandle
((HBRUSH)GetStockObject(WHITE_BRUSH)));
//pdc->Ellipse(rcBounds);
//限制控件窗口大小
if (rcBounds.Height!=25 ||
rcBounds.Width!=25)SetControlSize(25,25);
//显示位图
CBitmap bitmap;
CBitmap* pOldBitmap;
CDC MemDC;
MemDC.CreateCompatibleDC(pdc);
bitmap.LoadBitmap(IDB_DIALER);
pOldBitmap=MemDC.SelectObject(&bitmap);
pdc->BitBlt(0,0,48,48,&MemDC,0,0,SRCCOPY);
MemDC.SelectObject(pOldBitmap);
}

四、 添加拨号库及头文件---- 将rasapi32.lib 及 ras.h 加到工程项。

五、 添加控件属性

  我们要在控件中设置一些属性来实现应用程序与控件的传递参数及控制动作。在Class Wizard 的 Automation 标签中 , Class name 项选中 CDialerCtrl ,单击 Add Property 按钮,增加控件属性。

六、 增加拨号及收线函数

bool CDialerCtrl::DialUp(){ //拨号函数
RASDIALPARAMS rdParams;
rdParams.dwSize = sizeof(RASDIALPARAMS);
lstrcpy( rdParams. szEntryName, m_netWorking);
lstrcpy( rdParams.szPhoneNumber, m_phone);
rdParams.szCallbackNumber[0] = '\0';
lstrcpy( rdParams.szUserName, m_userName );
lstrcpy( rdParams.szPassword, m_passWord );
rdParams.szDomain[0] = '*';
hRasConn = NULL; //hRasConn
为 HRASCONN 类型的变量;
DWORD dwRet = RasDial( NULL, NULL,
&rdParams, 0L, NULL, &hRasConn );
if ( dwRet == 0 ) {m_message="OK!";
m_returnCode = deRet; return true;}
//这里省去出错处理代码
return false;
}
bool CDialerCtrl::HandUp(){ //收线函数
DWORD dwRet = RasHangUp( hRasConn );
//这里省去出错处理代码
return true;
}

七、 增加动作函数

控件的Action 的值一有改变将自动运行该函数,Action 有两个动作:1.拨号 2.收线。
void CXiaXinDialCtrl::OnActionChanged() {
// TODO: Add notification handler code
if (m_action==1) DialUp(); //调用拨号函数
if (m_action==2) HandUp(); //调用收线函数
SetModifiedFlag();
}

八、 编译,链接,自动注册

  启动VC++的建立(build)动作,将实行编译,链接生成 Dialer.ocx 并自动注册到本机。这时您可以启动VB 开发平台 打开 Components 就可以看到刚注册的 Dialer ActiveX Control Module 。

九、 VB 的调用方法

在VB的开发中,您可以和通用的控件一样使用Dialer.ocx。调用方法如下:
Private Sub Command1_Click()
Dialer1.NetWorking = Text1.Text
Dialer1.UserName = Text2.Text
Dialer1.PassWord = Text3.Text
Dialer1.Phone = Text4.Text
Label5.Caption = "正在拨号..."
Dialer1.Action = 1
Labe15.Caption = Dialer1.Message
' 如果接通 窗口最小化
If XiaXinDial1.ReturnCode =
0 Then Form1.WindowState = 1
End Sub
 

 

发表于 @ 2004年08月07日 00:16:00|评论(loading...)|编辑

新一篇: 用VC++实现软件的多语种支持 | 旧一篇: 对论坛中有关数据类型转换的总结

评论:没有评论。

发表评论  


当前用户设置只有注册用户才能发表评论。如果你没有登录,请点击登录
Csdn Blog version 3.1a
Copyright © 回家念经