原對話框中插入一個ocx的activex控制元件,添加了控制元件類變數,并自動生成了控制元件的類,可以正常呼叫控制元件的方法和屬性。但最近控制元件更新了方法和名字,重新插入后,添加變數但控制元件型別還是原來的名字,原來方法,沒有更新。洗掉掉原來的類后添加變數,變數的型別還是原來的不能改變。 求高手指導如何更新插入的控制元件。
uj5u.com熱心網友回復:
參考OCX物件后,會生成對應的.h .cpp檔案,要一起洗掉,再重新添加OCX生成.H .CPP。uj5u.com熱心網友回復:
或者,直接在原來自動生成的.H .CPP里修改成控制元件最新的屬性和方法。uj5u.com熱心網友回復:
參考OCX物件后,會生成對應的.h .cpp檔案,要一起洗掉,再重新添加OCX生成.H .CPP。--洗掉.h和.cpp后(包括原檔案)重新,插入添加變數,但是變數型別還是原來的控制元件型別不能改變。可是新控制元件的名字已經改變了。
或者,直接在原來自動生成的.H .CPP里修改成控制元件最新的屬性和方法。
---手動改過相應的方法和引數型別后,運行會出錯。。。。
uj5u.com熱心網友回復:
在不同的目錄下 創建一個和當前專案同名的對話框專案,然后插入控制元件, 關聯控制元件變數, 保存專案,把新生成的控制元件的.h .cpp拷貝過來,覆寫到原來專案中
注意備份
uj5u.com熱心網友回復:
在不同的目錄下 創建一個和當前專案同名的對話框專案,然后插入控制元件, 關聯控制元件變數, 保存專案,把新生成的控制元件的.h .cpp拷貝過來,覆寫到原來專案中
注意備份
新建了專案也重新生成(跟原來型別和類名一致的情況和新控制元件系統自動生成的情況)都分別復制了,但運行會出現 “無效的引數數目”框題, 但呼叫的那個函式型別和個數都是正常的。關鍵問題是新插入的控制元件名字跟原來的不一樣,同時新控制元件里有更新的方法。若是在新專案里新生成的話是新控制元件名字的類名和變數型別,但是在原專案同樣插入新控制元件但變數型別還是原來的無法修改。怎么能讓原來的控制元件型別改變(就是相當于沒有加載過控制元件的初始化狀態怎么還原)。幫忙分析下原因或者給出徹底的解決辦法。謝啦 !
uj5u.com熱心網友回復:
洗掉 除 dsw dsp 外 其余 工程檔案( aps clw ncb opt plg)試試uj5u.com熱心網友回復:
1.更新控制元件時先用regsvr32反注冊老控制元件,然后用regsvr32注冊新控制元件2.洗掉插入到對話框上的控制元件,洗掉生成的成員變數,洗掉生成的.h .cpp檔案,清理解決方案
uj5u.com熱心網友回復:
第一先確認你active控制元件是否有問題,可找臺沒有注冊過的電腦看看介面是否有暴露,如確認這沒問題在繼續。然后,其實3-7#講述的都差不多,該方法可行,更新完之后重新注冊并生成類正常情況即可,即使你智能提示還是原來的介面都沒關系,直接手工輸你新方法即可。出現該情況原因比較多,可以看成是你呼叫的時候vs還會在快取目錄下生成了一些宣告檔案等,所以可行的方式是關閉vs,找到該快取的目錄并清理(或視情況重啟下),重新打開并引入active控制元件應該就行了。還不行就換臺電腦,編譯完了再遷回來,或者可考慮通過標準com來呼叫而不通過包裝類
uj5u.com熱心網友回復:
首先感謝大家的關心和給予的幫助支持。最終 找到了解決方案 在這里給大家公布下,以幫助更多的人。http://www.cnblogs.com/scotth/p/3667192.html
解決辦法:
更新activeX方法:(更新ocx介面:)
洗掉ocx變數定義和變數映射(DDX_Control)
洗掉ocx對應的.h和.cpp檔案
關閉工程
用文本編輯器洗掉工程檔案(所有.vcproj)里的有關ocx資訊(1.<Globals>里面2.project里的最后有關上次控制元件類名的那一行)
打開工程
重新添加ocx變數解決
uj5u.com熱心網友回復:
轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/42166.html
上一篇:用MFC也可以開發進銷存軟體
