一个关于 CStringArray 传参数的问题,具体代码如下
火电 2005-11-24 11:42:32 CStringArray paramArray; //创建数组
.....给数组赋值
m_DealClass.DoOperate(¶mArray); //直接调用没有问题
/********** DoOperate 实现 **********/
VOID OpeateDeal::DoOperate(int ifunc, CStringArray *paramArray,HWND sendhwnd)
{
int ilen = paramArray->GetSize(); //取值没有问题
}
**********/
但是请求很多,我想异步处理,就是先将这些 paramArray 存放起来,在用一个timer触发
typedef struct
{
CStringArray *paramArray;
HWND hWnd;
} DefaultInfo;
CArray <DefaultInfo, DefaultInfo&> g_DefaultInfoArray;
DefaultInfo myStruct;
myStruct.hWnd = hWnd;
myStruct.paramArray = ¶mArray; //¶mArray就是上面直接调用的参数
g_DefaultInfoArray.Add(myStruct);
//保存到一个全局的 g_DefaultInfoArray 中
timer:
int ilen = g_DefaultInfoArray.GetSize();
if(ilen > 0)
{
for(int i=0;i<ilen;i++)
{
DefaultInfo myStruct = g_DefaultInfoArray.ElementAt(i); m_DealClass.DoOperate(myStruct.func,myStruct.paramArray,myStruct.hWnd);
}
g_DefaultInfoArray.RemoveAll();
}
这样调用 m_DealClass.DoOperate,为什么 myStruct.paramArray 传入后再通过
paramArray->GetSize(); 取值就不行了呢?
什么原因呢?
求助,帮忙阿,很着急的!!!!