小弟最近研究介面實現技術,過年也沒閒著,google了整個網路。弄介面也弄了幾年了,做比較炫的介面,也沒什麼問題。最近公司年後要啟動乙個專案,專案非常複雜(一套賣幾百萬),要使用文件/檢視結構,但一定要做深層次美化。以前一直用mfc做介面,使用gdi或gdi+貼圖,用ini或xml配置介面。常用控制項的美化也實現了好幾年了,都比較穩定,個別特殊控制項,實現一下也沒什麼問題,由於這個專案週期很長(兩年多),正好借新專案,好好總結一下目前比較常見的介面開發技術。今天先總結一下windowless的致命缺點,過兩天總結它的優點,和其它技術的優缺點。再提一句,我們的專案是使用wpf開發,也是windowless,但與我下面所說的windowless是兩回事。
windowless或者稱handleless,也就是無控制代碼視窗,在設計和實現的時候,每個控制項都自己實現,最後畫到父視窗中。另乙個偽windowless是用標準mfc控制項,然後通過hook或其它遠端執行緒注入等技術,讓spy++等軟體,看不到視窗控制代碼。這主要是為了防止盜號木馬通過edit視窗控制代碼,盜取使用者名稱和密碼。好了,費話少說,下面是小弟總結的windowless的缺點,如果要使用這類介面開發技術,要麼有源**,要麼是自己公司實現的,否則風險非常大。
1、無視窗控制代碼,所有您以前關於「視窗」概念的知識都白學了。您將不可能使用::showwindow(hwnd, sw_hide)來隱藏乙個視窗,也不能使用::movewindow來移動乙個視窗。
2、所有您以前學習的關於「訊息」的知識也作廢了。您不可能使用::sendmessage(m_hwnd, wm_settext, 0, (lparam)_t("hello world"));來設定視窗標題。
3、如果您的程式已經寫好,需要花費比開發程式還要長的時間來移值到directui介面上。
4、重新學習一套系統介面和概念,如果不是國際知名的大公司的windowless產品、這些知識對您的職業生涯沒有太多好處,反而浪費了您的時間。
5、如果不是國際知名公司的產品,產品的穩定性和可發展性無法保證。
6、如果您的功能層**需要與ui層互動,例如,要向ui視窗傳送訊息,那麼您的功能層**也要做相應的修改,所以windowless類的介面庫,不僅僅影響ui層,還影響功能層。
7、視窗的剪裁、啟用、繪製、訊息迴圈等等全部需要模擬。
8、除了極個別程式,全球幾乎所有軟體產品都使用win32布局方式,無論在技術儲備,相容性和獲得幫助方面,標準視窗觀念都有得天獨厚的優勢。
9、無法對編譯好的exe進行後期漢化、編寫外掛程式等常規操作。執行中的程式也無法響應其它程式發來的標準訊息,例如隱藏控制項、設定控制項文字等。
10、不支援mfc的文件/檢視框架。
綜上、windowless比傳統win32視窗樹形結構有很多侷限性和不確定性。
致命的誤區努力
努力的所有目的和意義都在於提公升認知。這是非常重要的乙個觀點,深入理解這個概念,就可以解決職場中70 以上的問題。在職場中,通常會遇到的情況是 我也很努力呀,為什麼公升職不是我呢?在我們組裡,我的加班也很多,為什麼加薪的不是我 諸如此類的問題,最重要的原因在於對努力認識的不夠所導致的。大家更傾向於將...
致命的自負很危險
在就任昆明市委書記後的幾個月中,仇和雷厲風行地開 始了一場 新政o破鼓須用重錘敲 當官的可有人治了 當地百姓如此表達其欣賞肯定之惰。就在這時,偏偏有人 對仇和新政 說三道四 比如北大教授姚洋。特別是針對 仇 和式招商 姚洋公開提出了異議。昆明今年將成立35個招商分局,派駐沿海地級以上城市,實行專業化...
cookie帶來的致命危險
1 危險 當記錄了過多的cookie時,可能導致http header過大,進而導致伺服器端發生錯誤,導致使用者無法開啟頁面。2 cookie限制 各瀏覽器對單cookie鍵的限制基本都在4kb左右。上下可能有30多b的差別。差別基本不大。但對cookie總大小的限制卻差別很大。其中chrome和i...