天天看點

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

近期在做一個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線程經濟的擁有自己的消息循環.

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