现在的位置: 首页 > 综合 > 正文

一个项目中遇到的若干问题-提出问题-分析问题-解决问题

2018年04月27日 ⁄ 综合 ⁄ 共 1381字 ⁄ 字号 评论关闭

近期在做一个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.  

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~分析解决问题~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

抱歉!评论已关闭.