用VC++6.0編寫撥號程式 (轉)
本方法是利用VC++製作一個撥號控制元件,提供撥號與收線功能。VC++ 6.00提供控制元件的建立引導(MFC ControlWizard)可以生成ActiveX 控制元件的程式。撥號功能是由VC++提供的 ras32.lib 的庫支援的,函式及變數在 ras.h 頭定義。函式RasDial()實現撥號功能,RasHangUp()用來終止撥號連線。函式方法:
D dwRet = RasDial( NULL, NULL,
&rdParams, 0L, NULL, &hRann );
DWORD dwRet = RasHangUp( hRasConn );
其中:
rdParams 為 RASDIALPARAMS 結構,
主要引數定義如下:
DWORD dwSize 結構變數的大小;
TCHAR szEntryName[] 撥號網路中建立的連線名;
TCHAR szPhoneNumber[] 電話號碼,
若採用 szEntryName 中定義的號碼,置為NULL 值;
CHAR szCallbackNumber[] 回撥號碼,不用時置為NULL;
TCHAR szUserName[] 名;
TCHAR szPassword[] 使用者口令;
TCHAR szain[] 使用者驗證域,
若為'*'採用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 的點陣圖,該圖將在的資源工具箱中顯示為一個圖示。實際上圖示可以顯示到 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)GetStock(WHITE_BRUSH)));
//pdc->Ellipse(rcBounds);
//限制控制元件視窗大小
if (rcBounds.Height!=25 ||
rcBounds.Width!=25)SetControlSize(25,25);
//顯示點陣圖
CBitmap bitmap;
CBitmap* pOlitmap;
CDC MemDC;
MemDC.CreateCompatibleDC(pdc);
bitmap.LoadBitmap(IDB_DIALER);
pOldBitmap=MemDC.Object(&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, mWorking);
lstrcpy( rdParams.szPhoneNumber, m_phone);
rdParams.szCallbackNumber[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
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/10748419/viewspace-1003900/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 用BCB編寫身份證號識別程式 (轉)
- 撥號上網程式 (轉)
- 在應用程式中實現RAS撥號 (轉)
- 用Delphi編寫DelTree程式 (轉)
- VC的撥號上網程式 (轉)
- 用VC++編寫CGI程式 (轉)C++
- 用VB編寫抽獎程式 (轉)
- 在DELPHI程式中撥號上網 (轉)
- 用Delphi編寫安裝程式(1) (轉)
- 用VB編寫標準CGI程式 (轉)
- 用 C++Builder 編寫 Tray 程式 (轉)C++UI
- VC++實現撥號上網程式 (轉)C++
- 用VC++實現上網撥號功能 (轉)C++
- 為Linux 應用程式編寫 DLL(轉)Linux
- 用 Delphi 編寫 VxD 裝置驅動程式(轉) (轉)
- 談用Delphi程式獲取撥號連線的動態IP地址 (轉)
- 編寫Linux實用程式的藝術(轉)Linux
- 用Delphi編寫塗鴉桌面的小程式 (轉)
- SNMP用VC++6.0實現的方法 (轉)C++
- FreeBSD撥號網路(轉)
- 用Java編寫ASP元件 (轉)Java元件
- 用Excel編寫小遊戲 (轉)Excel遊戲
- 用C#Builder編寫螢幕保護程式 (轉)UI
- SCO Openserver 5.05撥號詳解 (轉)Server
- 用匯編編寫DOS下的記憶體駐留程式(5) (轉)記憶體
- 用匯編編寫DOS下的記憶體駐留程式(3) (轉)記憶體
- 用匯編編寫DOS下的記憶體駐留程式(4) (轉)記憶體
- 用C語言編寫Linux實用程式的藝術(轉)C語言Linux
- 用Delphi編寫點對點傳檔案程式(1) (轉)
- 用Delphi編寫點對點傳檔案程式(2) (轉)
- 用VC6編寫登錄檔管理程式(三) (轉)
- 用VC6編寫登錄檔管理程式(二) (轉)
- 用Visual C++編寫電子郵件程式 (轉)C++
- 編寫高效的MySQL應用(轉)MySql
- 用PHP編寫Android應用程式PHPAndroid
- UNIX 系統上實現撥號(轉)
- 回撥地獄-編寫非同步JavaScript指南非同步JavaScript
- 編寫易讀的程式碼 (轉)