一個項目中遇到的若干問題-提出問題-分析問題-解決問題

近期在做一個wince平臺下的程序,本項目採用ATL/COM組件設計的思路,在設計和開發中遇到了很多問題,這裏先一一記錄,待日後開發過程逐步解決候,就會分析各個問題,給出問題的答案。

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~提出問題~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

  1. wince中unicode編程的問題:wince操作系統中使用的是unicode,那麼有個問題:編程的過程,對於所有的字符或者字符串,都要使用TCHAR類型還是只是在函數的參數中使用unicode就可以了?
  2. 關於不定長度數組問題:如我們有一個不定長度的BYTE類型的數組,是使用BYTE *bteArray還是使用容器vector<BYTE> bteArray呢?哪一種的效率更高。因爲這個BYTE數組一直被循環的頻繁的使用到。對於這個數組,沒有數據修改的操作(插入刪除操作)。
  3. 關於COM接口函數中數據類型的使用:儘量使用COM標準數據類型嗎?下圖是標準的數據類型,從VS2005中截圖而來:
     
    如,我想用參數傳遞字符串數組,是使用TCHAR *StrArray還是使用vector<TCHAR>& StrArray還是使用LPTSTR StrArray呢?
  4.   關於COM接口函數中,OUT參數可以是引用參數嗎? eg: [out] vector<TCHAR>& StrArray
  5.  COM組件代碼中,可以創建其他的類的代碼,而這些類是普通的類,而非從接口繼承而來,這些普通類中使用繼承和多態等特性,該com組件創建該普通類的對象,使用該普通類的功能。如下圖所示:

    這種方式是否可行,還是應該把普通類作爲另外一個組件封裝起來,讓組件來調用它?
  6.   如何使自己的組件更通用?爲使自己的組件更加通用,勢必要從整塊整塊的邏輯功能中抽象出基本的共同點,形成一個通用的組件(也即類似於c++中的基類),然後其他組件包容或者聚合該組件,形成獨具特色的組件。那麼這樣也就增加了組件的層次結構,組件的調用層次更深,效率問題有待考慮。還有什麼方法能夠是組件更加通用?
  7. 傳遞組件的接口指針的問題:在主代碼邏輯中(main函數中吧),創建了一個組件的接口指針pA,然後,也創建了很多其他的組件的接口指針PB, pC, pD, pE, pF等,現在要將組件的接口指針pA傳遞給PB, pC, pD, pE, pF,比如用PB, pC, pD, pE, pF的共同方法:SetAPoint,將pA傳遞給這些組件中,用變量PointA保存。然後在需要的時候使用該接口指針。在傳遞的過程中需要注意什麼問題?
  8.   怎樣才能使worker線程(即沒有界面,沒有窗口的線程)擁有消息循環(開銷最小) ? 有人說創建一個隱藏的窗口,有人說調用任何圖形相關的函數,有人說讓程序擁有下面的代碼:
       MSG   msg;
       while (GetMessage( &msg, NULL, 0, 0 ))
       {
          TranslateMessage( &msg );
      DispatchMessage( &msg );
       }
    到底如何才能使一個worker線程經濟的擁有自己的消息循環.
  9.  

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~分析解決問題~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章