by 張越
cdirectscreenaccess , rdirectscreenaccess 和 mdirectscreenaccess的關係
cdirectscreenaccess是乙個ao,它包含乙個rdirectscreenaccess型別的成員,而rdirectscreenaccess繼承自mwsclientclass,
具有server的控制代碼,而且它包含rwssession成員,這個成員繼承自rsessionbase,所以顯然,這是乙個window server的client。
這樣乙個模式,就是我們平時使用的典型的通過ao去訪問乙個client side dll的方式。這樣,通過cdirectscreenaccess這個ao以及
rdirectscreenaccess實現了c/s的非同步呼叫.
server通知client有abort需要處理,此時client執行緒中,runl將被呼叫,應該是這樣的:在client端,cdirectscreenaccess通過rdirectscreenaccess訪問server,
然後setactive(),rdirectscreenaccess在得到server應答之後,呼叫cdirectscreenaccess的runl(),通知cdirectscreenaccess
處理,根據情況判斷在runl中呼叫了abortnow()方法。實際上,在作上乙個專案的時候,我也有和此模式完全一樣的做法。
至於為什麼我認為mdirectscreenaccess的方法abortnow()是在runl中被呼叫的。一是因為文件中這樣提到了,另外,我認為作為乙個典型的observer模式,這樣設計是合理的,我也這樣做過。其他的方式可能只會更複雜。
by r60600
用windows sever在螢幕上繪圖需要進行上下文切換,這會減慢了繪圖速度。越過windows sever就
避免了上下文切換,這樣就可以直接訪問螢幕,即:直接繪圖。
symbian os有三種直接繪圖:
1.建立並使用cfbsscreendevice
2.直接訪問視訊記憶體
3.使用cdirectscreenaccess
cfbsscreendevice 是乙個圖形裝置,使用前需要為它建立乙個cfbsbitgc圖形描述表,它具有指向螢幕驅動器scdv.dll的位址。使用它繪圖在螢幕上直接完成而不需 要windows sever。windows sever不知道直接繪圖繪圖動作,別的視窗出現時直接繪圖無法停止,從而有可能使螢幕雜亂。
獲得視訊記憶體位址,直接通過指標訪問視訊記憶體對螢幕進操作比cfbsscreendevice方法快,但其效能會受裝置驅動器
的影響。在某些裝置中,螢幕會根據視訊記憶體的變化自動更新,而另一些裝置的繪圖必須要去啟用才行。
視訊記憶體位址只對目標硬體有效,在模擬器中我們使用臨時位圖及其資料位址。
cdirectscreenaccess是一種較為安全(會得到windows sever的通知)的直接訪問螢幕的的方法,速度也較快。所以很多時候都推薦用cdirectscreenaccess。
解BUG的一些心得
目前,軟體 一直是程式設計師的夢魘,但其實只要掌握一定的技巧和基本知識,是可以輕鬆解決掉這些bug的。1 程式跑一段時間以後會越跑越慢。2 程式無緣無故crash。3 程式記憶體越變越大,直至程式crash。4 程式跑著突然死掉了。一 定位執行緒。以上解決問題的關鍵是先定位到程式變慢的 對於第1 4...
一些待解的疑問
想了想,還真不知道拿什麼題目起頭。這樣,從以前的文章開始好了。為什麼oo是有本質缺陷的?這篇文章中的疑問首先有這麼一點 靜態語言中,我們如何能在改變乙個系統內部介面的時候 注意,不是對外發布的,所以沒有不能更改的問題 只更改一處就解決問題?比如最簡單的,乙個類,有name屬性,是string的,它對...
解演算法題的一些基本技巧
解題的流程 1.理解題意 2.思考所有可能的解法,以及對應的時間空間複雜度 3.選擇想到的最優解法編寫 4.寫測試用例 寫 的流程 1.想清楚 的初始狀態,遞推公式 遍歷要執行的操作,終止條件 2.編寫初始化,迴圈遍歷 3.處理邊界值 4.返回結果 常用的一些思想 0.使用雜湊表降低各種查詢,存在判...