標籤:style blog http color 使用 os io strong
之前有用過VC6的mscomm控制項。所以這次也想繼續用此控制項實現此功能,結果沒想到剛一上手還真的繞了不少彎子。主要是因為VC2010下對mscomm控制項的添加,以及對控制項成員變數的添加有點小繁瑣,特此把個人實踐的經驗寫下來以供新人蔘考。說明一下,本人用的xp+VS2010。
如果你正在使用2010,並且想用mscomm控制項,遇到如下問題,那你可以看看這篇文章。
1. 添加了mscomm控制項以及對應的控制項變數以後發現以前mscomm的成員函數,類似setsettings(),commport(),都不見了
2. 在類嚮導裡添加了訊息響應函數OnMscomm之後無法進入
不要問我為什麼這樣做就可以解決這些問題,因為我也不知道原因,但是實踐下來,按照以下步驟做,就可以解決這些問題。解決方案都是網上找來的,^_^
1. 首先,2010不支援mscomm控制項,所以要註冊mscomm控制項,我看了兩篇文章,都按照做了
http://blog.csdn.net/flydream0/article/details/8002012
http://hi.baidu.com/shareshow/item/6f8d48f60cd5d7d642c36ae7
簡單來說,就是下載控制項,註冊控制項,修改註冊表
第一步:下載MSComm控制項
:http://download.csdn.net/detail/flydream0/4583699
第二步:註冊組件(遇到問題,見文章最後解決辦法)
壓縮包內包含四個檔案:
MSCOMM.SRG
MSCOMM32.DEP
MSCOMM32.oca
mscomm32.ocx
複製到系統硬碟的C:\Windows\System32(WIN7系統)。 然後在運行裡,輸入:
Regsvr32 C:\winnt\system32\Mscomm32.ocx
然後會看到以下提示,說明註冊成功了
第三步:修改註冊表
在註冊表中手工建立一個主鍵項:先在點擊“開始”->"運行",再在中填入regedit命令開啟註冊表
找到HKEY_CLASSES_ROOT\Licenses,在其中添加主鍵
4250E830-6AC2-11cf-8ADB-00AA00C00905
並將內容設定為:
kjljvjjjoquqmjjjvpqqkqmqykypoqjquoun
至此,mscomm控制項註冊完畢!
接下來就是如何在工程裡添加mscoom控制項了。
第一步:在工具箱的這個位置右鍵,選擇choose item
第二步:在彈出的元件匣裡選擇“COM Components”下的"Microsoft communication control 6.0",然後工具箱裡就會有一個電話表徵圖了
第三步:添加控制項,也就是把電話表徵圖拖到對話方塊裡,並添加控制項變數
增加空間以後,在控制項上面右鍵,然後選擇“add variable”,這個時候請特別注意,兩個紅框裡面的檔案會被自動添加到工程,並且檔案
名都帶“1”.如果你的工程裡沒有自動添加,或者檔案名稱後面不帶“1”,那麼出錯的可能性就很大了。網上有種文章說,用右鍵工程-->添加MFC類-->
添加ActiveX的MFC類-->添加mscomm類定義,這樣添加出來的檔案個人實驗下來是不帶“1”的。我也不知道為什麼,這兩種方法大概都
可以,有空的話你可比較一下帶“1”和不帶“1”的兩個cpp檔案和h檔案的區別。
第四步:添加訊息響應函數
在控制項上右鍵-->添加事件handle-->添加響應函數
這樣添加以後cpp檔案裡會自動多出來以下代碼:
BEGIN_EVENTSINK_MAP(CMscommTest3Dlg, CDialogEx) ON_EVENT(CMscommTest3Dlg, IDC_MSCOMM1, 1, CMscommTest3Dlg::OnCommMscomm1, VTS_NONE)END_EVENTSINK_MAP()void CMscommTest3Dlg::OnCommMscomm1(){ // TODO: Add your message handler code here}
注意,不要在控制項上面右鍵用類嚮導添加訊息響應函數,這樣添加的訊息響應函數是無法被觸發的,我也不知道為什麼,順便求高人指點。
至此,mscomm控制項已經控制項變數已添加完畢
(註:以上部分來源於:drlsdrls《關於2010下使用mscomm控制項》)
在註冊時會遇到的問題:
關於WIN7下STCISP因MSCOMM32.OCX控制項問題無法運行及解決方案
本人一直用的XP系統,調試單片機從來沒有出現過問題。
前兩天樓上的哥們買了新電腦,裝的是WIN7系統,他也開始學單片機了,但是卻發現stcisp下載程式無法開啟,每次雙擊開啟這個程式,都會彈出以下對話方塊
說“組件‘MSCOMM32.OCX‘或其附件之一不能正確註冊:一個檔案丟失或無效”。我頓時對win7的相容性產生了不小的懷疑。
沒有碰見過這種情況,就上網看看有沒有先輩碰到這種問題並解決的。上網查詢後發現這個問題的原因貌似是沒有註冊MSCOMM.OCX控制項。於是我就下載了一份MSCOMM32的檔案,把連同‘MSCOMM32.OCX‘在內的四個檔案拷貝到了C:\windows\system32中去,又在CMD命令提示字元中輸入“regsvr32 mscomm32.ocx”,來在系統註冊,結果又彈出錯誤對話方塊:說
“模組‘mscomm32.ocx’已載入,但對DllRegisterServer 的調用失敗,錯誤碼為0x8002801c。有關此問題的詳細資料,請將該錯誤碼用做搜尋字詞進行聯機搜尋。”
也就是沒有完全註冊成功。
網上還有這樣的方法,就是在註冊表中手工建立一個主鍵項:先在點擊“開始”,"運行",再在中填入regedit命令開啟註冊表,找到HKEY_CLASSES_ROOT\Licenses,在其中添加主鍵
4250E830-6AC2-11cf-8ADB-00AA00C00905 並將內容設定為:kjljvjjjoquqmjjjvpqqkqmqykypoqjquoun
嘗試了一下,重啟,發現仍然是“組件‘MSCOMM32.OCX‘或其附件之一不能正確註冊:一個檔案丟失或無效”。
很鬱悶。不知所措,無奈地讓那哥們給賣家打電話,說明情況,問如果這樣是不是必須改成XP系統才能下載程式。我還在想這個應該算是電腦方面的問題,那邊的老闆主要還是搞單片機比較強一些,不知道他能不能解決。結果老闆很有信心地說,這個問題很簡單,單擊右鍵點“以管理員身份運行”就可以了。試了一下,成功開啟了。。。
唉,原來這個問題如此簡單,害得我費半天功夫瞎整一氣也沒整出來。
(經驗來源:抱歉我不能再找到原作者,只能找到N多的轉載,只能默默向原作者致敬,向無數百折不撓解決問題,分享辦法的同志致敬!)