PCman 板


LINE

很抱歉我可能要說一下,PCMan 2004 Pro對於Web的功能不會有多少改良 底下我做一些說明,希望大家一定要抽空閱讀一下囉 使用IE內嵌的程式設計方式和一般視窗程式相當不同,PCMan 2003 Pro 是使用MFC包裝過的Component,實際上沒有這個現成的元件,我是寫不出來的 但說他現成,他其實封裝的很原始,只有基本功能而已,其他東西還得自己來 不要說是我,就連有五個人一起寫的KKman也是用MFC包好現成的CHtmlView 我不是,我是用VC++的功能,用MFC包裝更底層的ActiveX Control 那是VC++直接引用ActiveX元件,然後產生對應的CWebBrowser2元件,很難用 但這不是重點,重點是IE相關的程式設計牽涉甚廣,就連有多年經驗的人 也不見得可以深究其中細節,要寫IE相關的程式不是只要C++,VC++,MFC等視窗程式經驗 要動到稍微進階的功能的話,就要從頭學COM (compenent object model) 他不是程式語言,只是一種微軟定義的介面,用各種語言都可以寫,在VB裡最簡單, Delphi也有不錯的支援,至於VC++...就要玩硬幹的,或是ATL會比較方便, 但那又完全是另一套新的東西...@@ 尤其要使用IE的東西,文件相當缺乏 大家一定不知道,但實際上連網頁內尋找的功能,微軟都沒開放出來, 那為什麼各家使用IE內嵌的軟體都可支援? 你們可知道這是官方文件沒記載的東西? 當初在網路上找了好久好久好久,最後才找到一段英文的 undocumented command 還要自己額外定義某個常數,這才把它給支援出來,我寫這程式,VC++提供的東西 包括文件根本就不夠用,查遍網路就是沒有資料,我又沒學過COM COM是個很詭異的技術,是跨語言甚至理論上可跨平台的概念,以各種元件封裝 艱澀難懂,很不人性化,整個IE,還有Windows shell都是用COM構成的, 沒有堅強的COM/OLE底子,根本不可能寫這類程式,何況還要不斷閱讀"豐富"的文件 重點是還不一定找的到資料,COM裡面沒有在C++熟析的"物件指標",一切都是"介面" 每要用一個小東西,就要QueryInterface,然後取得虛擬函數介面指標, 接下來又是一場惡夢,混戰之後還要記得Release剛取得的指標,否則資源會沒釋放 整個的COM和我們一般人熟析的程式設計方式完完全全的不同,更是複雜難懂 而 IWebBrowser2 只是一個操作瀏覽器的介面,要操作文件內容或是視窗,就要 在Query其他interface,一堆莫名奇妙的東西,我貼一行程式碼上來你們就了解 我幹麻這樣抱怨,真是有夠醜,每次用某個interface都要先query還要檢查有 沒有支援該介面,如果有才繼續,最後還要記得釋放,問題是搞不清楚這些在幹麻 IHTMLDocument2* pHTMLDoc=NULL; if( SUCCEEDED(lpd->QueryInterface(IID_IHTMLDocument2,(void**)&pHYMLDoc)) ) { IHTMLWindow2* pWnd=NULL; if( SUCCEEDED( pHTMLDoc->get_parentWindow(&pWnd)) ) pWnd->Release(); pHTMLDoc->Release(); } 看起來是C++語法,骨子裡用的東西全都是COM的架構,去看相關文件一看當場傻眼 難怪KKman也選擇用MFC包裝好的現成元件...直接去寫一堆這種東西會爆炸的? 我看了好久的文件還是找不出很多東西到底要怎麼做,只能說MyIE那些軟體作者是神 我看過MyIE的code,其實真的寫的很醜...進階功能全部都是用COM, 一般視窗的部份我都看的懂也會做,但是牽涉到瀏覽器的部份就看不懂 這想必也是為何KKman只能支援到基本Web功能,因為他跟我一樣是用現成元件去寫 那為何GreenBrowser這麼強? 大家可知道他不是一個人寫的? 他源自於MyIE 中間經過太多人的陸續修改,大陸人真的好強! 傳聞MyIE原作者因法輪功被捕死亡 其中一些很方便的Web功能,我還真的查不到它是怎麼做到的,相關文件太多 很多東西卻是完全找不著,像MyIE程式碼當中,網頁內容尋找的部份,很巧 跟我在網路上最後找的英文文件給的那一段,完全一模一樣,連註解,變數名都相同 不用說也知道,是直接複製貼上的,這種東西,沒有參考資料根本不可能有人會寫 我猜寫KK人的作者搞不好跟我找到的也是同一份文件 :) 或是它也參考了MyIE? 總之我要說的是,之所以只支援很陽春的Web功能,實在不是不願意做,而是... 那真的不是人幹的,你們哪位要寫留給你們寫吧,我要吐血了  ╮(﹀_﹀")╭ 找不到相關文件真是無從寫起,你們相信嗎?用了MFC提供的Event Sink包裝之後 居然引發Multithreading相關問題,這些微軟的文件上根本半個字都沒寫, 是我一再無故當機卻找不到bug,花了無數時間debug才發現的,別太苛求了吧! 其實我真的也只是初學者而已...會的東西不過基本視窗程式設計而已 很多東西也一直在摸索,並不是像很多人以為的高手,這點是一定要澄清的 眼看假期又要用完,PCMan 2004還是難產啊...所以有人再問我瀏覽器功能的話 我的回答,就請看下一篇文章.... --



※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 140.129.59.3 ※ 編輯: HZYSoft 來自: 140.129.59.3 (01/30 04:20)
1F:→ HanJyi:作者好辛苦..這篇要m起來,走open source 推 140.123.181.92 01/30
2F:→ kjol:ms暗槓太多"獨門"程式碼 推 218.164.35.157 01/30
3F:→ advicer:MSDN很好用... 推 140.123.254.21 01/30
4F:→ HZYSoft:MSDN是好用,但有些東西確實也沒有... 推 140.129.59.3 01/30







like.gif 您可能會有興趣的文章
icon.png[問題/行為] 貓晚上進房間會不會有憋尿問題
icon.pngRe: [閒聊] 選了錯誤的女孩成為魔法少女 XDDDDDDDDDD
icon.png[正妹] 瑞典 一張
icon.png[心得] EMS高領長版毛衣.墨小樓MC1002
icon.png[分享] 丹龍隔熱紙GE55+33+22
icon.png[問題] 清洗洗衣機
icon.png[尋物] 窗台下的空間
icon.png[閒聊] 双極の女神1 木魔爵
icon.png[售車] 新竹 1997 march 1297cc 白色 四門
icon.png[討論] 能從照片感受到攝影者心情嗎
icon.png[狂賀] 賀賀賀賀 賀!島村卯月!總選舉NO.1
icon.png[難過] 羨慕白皮膚的女生
icon.png閱讀文章
icon.png[黑特]
icon.png[問題] SBK S1安裝於安全帽位置
icon.png[分享] 舊woo100絕版開箱!!
icon.pngRe: [無言] 關於小包衛生紙
icon.png[開箱] E5-2683V3 RX480Strix 快睿C1 簡單測試
icon.png[心得] 蒼の海賊龍 地獄 執行者16PT
icon.png[售車] 1999年Virage iO 1.8EXi
icon.png[心得] 挑戰33 LV10 獅子座pt solo
icon.png[閒聊] 手把手教你不被桶之新手主購教學
icon.png[分享] Civic Type R 量產版官方照無預警流出
icon.png[售車] Golf 4 2.0 銀色 自排
icon.png[出售] Graco提籃汽座(有底座)2000元誠可議
icon.png[問題] 請問補牙材質掉了還能再補嗎?(台中半年內
icon.png[問題] 44th 單曲 生寫竟然都給重複的啊啊!
icon.png[心得] 華南紅卡/icash 核卡
icon.png[問題] 拔牙矯正這樣正常嗎
icon.png[贈送] 老莫高業 初業 102年版
icon.png[情報] 三大行動支付 本季掀戰火
icon.png[寶寶] 博客來Amos水蠟筆5/1特價五折
icon.pngRe: [心得] 新鮮人一些面試分享
icon.png[心得] 蒼の海賊龍 地獄 麒麟25PT
icon.pngRe: [閒聊] (君の名は。雷慎入) 君名二創漫畫翻譯
icon.pngRe: [閒聊] OGN中場影片:失蹤人口局 (英文字幕)
icon.png[問題] 台灣大哥大4G訊號差
icon.png[出售] [全國]全新千尋侘草LED燈, 水草

請輸入看板名稱,例如:Tech_Job站內搜尋

TOP