人人做人人澡人人爽欧美,国产主播一区二区,久久久精品五月天,羞羞视频在线观看免费

當(dāng)前位置:蘿卜系統(tǒng)下載站 > 技術(shù)開發(fā)教程 > 詳細(xì)頁面

VB與VC混合編程中處理消息的辦法

VB與VC混合編程中處理消息的辦法

更新時(shí)間:2022-08-01 文章作者:未知 信息來源:網(wǎng)絡(luò) 閱讀次數(shù):


現(xiàn)在越來越多的人采用VB與VC的混合編程:用VB快速開發(fā)出漂亮的界面以及外圍處理程序,再用VC編寫底層的各種操作,例如內(nèi)存的操作、IO端口的操作等,VC中還可以嵌入?yún)R編語言進(jìn)行更底層的操作。
一般的做法是將VC程序編譯成DLL,在VB中用Declare語句聲明DLL中的函數(shù),例如:
Declare Function SendCommand Lib ″c:\program files\devstudio\wjfprojects\Hr0506dllMnsr\debug\Hr0506dllMnsr.dll″(CmdNum As Integer) As Boolean
聲明以后,函數(shù)SendCommand 就可以當(dāng)作VB自己的函數(shù)使用了。
但是,怎樣將VC中的各種消息(例如各種底層的狀態(tài))及時(shí)通知VB并且VB能夠及時(shí)處理呢?這是VB的一個(gè)缺陷:不能方便地處理自定義的Windows消息。例如在VC中自定義了兩條消息:MW_TAPI_DATACOME,MW_TAPI_BUSY,在C語言中,用PostMessage(hWnd,MW_TAPI_CONNECTED,0,0);語句可以很方便地將MW_TAPI_CONNECTED消息傳遞給窗體(窗體句柄為hWnd),在主回調(diào)函數(shù)中就可以處理了。但是要把這條消息傳遞給VB,并讓VB處理這條消息,并不太容易。雖然在VB5.0以上的版本中,可以定義自己的事件(EVENT),但比較麻煩。這里介紹一種簡單的方法,讓VB巧妙地處理自定義的消息:
1.首先將VB窗體中TextBox控件Text1的句柄傳遞給DLL(注意:VB中的TextBox控件有hWnd屬性)。
VB中: ′聲明DLL中的函數(shù)
Declare Function SendhWnd Lib ″c:\program files\devstudio\wjfprojects\Hr0506dllMnsr\debug\ Hr0506dllMnsr.dll″ ((ByVal hWnd As Long) As Boolean
′傳遞text1的句柄
SendhWnd(text1.hWnd)
VC中://句柄接收函數(shù)
declspec(dllexport) BOOL GethWnd(HWND hWnd1)
{ hWnd=hWnd1;
if (hWnd==NULL)
{ return FALSE; }
return TRUE;}
2.在VC中用API函數(shù)SetWindowText取代PostMessage直接發(fā)送消息給VB中的Text1控件:
SetWindowText(hWnd,″ MW_TAPI_DATACOME ″);
3.在Text1_Change事件中處理消息:
Private Sub Text1_Change()
Select case Text1.text
case W_TAPI_DATACOME:
′消息處理語句
case MW_TAPI_BUSY:
′消息處理語句
default:
′其他處理語句
End Select
End Sub
以上方法在作者編寫的“TAPI遠(yuǎn)程監(jiān)控系統(tǒng)”中使用,效果很好。

溫馨提示:喜歡本站的話,請收藏一下本站!

本類教程下載

系統(tǒng)下載排行

網(wǎng)站地圖xml | 網(wǎng)站地圖html
主站蜘蛛池模板: 汶上县| 历史| 石屏县| 嵩明县| 股票| 扎兰屯市| 湖北省| 宁阳县| 临泉县| 五寨县| 礼泉县| 甘肃省| 绥宁县| 宝应县| 武邑县| 广宁县| 江源县| 海口市| 宁化县| 平山县| 栖霞市| 龙陵县| 体育| 西宁市| 利津县| 乐平市| 富宁县| 错那县| 莱州市| 朔州市| 安吉县| 彭泽县| 舟山市| 吉林市| 绥棱县| 长宁区| 弥渡县| 乐平市| 班戈县| 屏山县| 内乡县|