1.进程A创建了线程B,需要在线程B中修改进程A的全局变g_num为10,请写出代码2.某公司需要开发一个客户端绘图软件,以实现画线、画圆、画多边形等功能,并把图形发送到连接在远程服务器端的绘图仪上打印。绘图仪公司提供了用来控制绘图仪的动态链接库(安装在服务器端),动态链接库中包含如下一些API:
Init()  //初始化绘图仪
draw(RGB(),x ,y)  //绘图
等等
1)请画出程序的主要数据流程图和用例图
2)为了使客户端使用更加灵活,考虑使用COM技术实现对远程绘图仪的控制,请使用IDL语言编写一个COM IDispatch接口
3)请画出程序调用2)中COM接口的数据流程图
4)使用多线程技术实现客户端绘图软件绘图和打印的同步进行,请用VC++编写客户端与服务器的通讯线程

解决方案 »

  1.   

    1.进程 A、B 共用一个DLL,使用一个位于 share 数据段具备 rws 属性的导出静态变量
    2.1)流程图略、用例图略
      

  2.   

    2.2)
    interface IDrawDevice;
    [
    uuid(11111111-2222-3333-4444-555555555555),
    version(1.0),
    helpstring("Drawing Device Interface")
    ]library DrawDevLib
    {
    [
    uuid(1B6ED8C0-EB38-11D1-BF0B-0000B4560A15),
    helpstring("DrawDev Class")
    ]
    coclass CDrawDev
    {
    [default] interface IDrawDevice;
    };
    -_-!!! 记不住了
      

  3.   

    2.3,2.4)略
    看来还
    Coder<-----------*---|--------------->Aalyser
      

  4.   

    如果是全局变量,可以直接修改,如果是类中的成员变量,先要获得这个类的指针,然后通过这个指针修改。IDL语言写一个:import "unknown.idl";
    [object uid(里面写GUID)]
    interface IDrawDevice : IUnknown
    {
        这里写上需要的函数。这样就该就可以了。我也是初学,一起进步。
    }
      

  5.   

    1.进程A创建了线程B,需要在线程B中修改进程A的全局变g_num为10,请写出代码我看了老半天,看来不是进程A创建了进程B,哈哈!