我的程序中有一个DlgManage.dll,该dll里面主要包含几个对话类CDlg1,CDlg2,CDlg3,CDlg4,CDlg5。该dll中我提供了一个可供外部调用的函数来显示CDlg1。CDlg1对话框的操作中,会调用到CDlg2,CDlg3,CDlg4,CDlg5等对话框。问题:CDlg1,CDlg2,CDlg3,CDlg4,CDlg5等对话框中都会用到以下几个Array:#define Data_Array1 CArray<CDataContent*,CDataContent*>Data_Array1 m_data_index;        
Data_Array1 m_data_choose;  
Data_Array1 m_data_master; 这几个Array里面的东西,在程序启动的时候给它们填充数据,在某个对话框(如CDlg4)中,可能会修改这些数据。    如果不将对话框做成dll,我倒是在Doc里面定义这几个变量即可。但是做成dll的,我该将这些变量放在什么地方比较好呢。望指教。     

解决方案 »

  1.   

    可以把这个几个Array作为Dll提供外部调用的函数参数传递...
      

  2.   

    最好不要多个模块共享数据,可以把数据定义在DLL里面,给外部模块提供接口来访问数据。
      

  3.   

    谢谢楼上几位的回答!
    几个对话框都必须能够访问到这个数据,因为它们有不同的用途,有添加到Array,有更新Array里面的数据等。另外,我的主程序exe以及还有另一个dll模块也要根据这几个array来做一些工作。谢谢再指点~~~~
      

  4.   

    主程序中负责分配,释放Array等,DLL等其他模块中修改数据等...
      

  5.   


    谢谢oyljerry 的回复。你的意思是说,我的这几个Array变量,应该在主程序中定义并加载数据。用到这些数据的dll,从主程序中获取这些Array,来改变这些Array?如果是这样,我的dll该怎么获取主程序中的这些Array?另外,我希望这个dll能够被其它的程序调用,如C#版的。
      

  6.   

    主程序的Array通过dll导出函数的参数传递进去,这个我前面帖子提到了如果你的dll要被其他程序调用,那么你的dll首先要做成Windows stdcall 标准dll,其次你的参数可以用SAFEARRAY等来做参数,这样可以多个语言调用等..