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(); 取值就不行了呢?什么原因呢?求助,帮忙阿,很着急的!!!!
.....给数组赋值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(); 取值就不行了呢?什么原因呢?求助,帮忙阿,很着急的!!!!
你多加了一重指针
{
CStringArray *paramArray;
HWND hWnd;
} DefaultInfo;还是这样定义吗?编译报错阿?
声明部分:typedef struct
{
int func;
CStringArray *paramArray;
HWND hWnd;
} DefaultInfo;CArray <DefaultInfo, DefaultInfo&> g_DefaultInfoArray;
赋值语句:
DefaultInfo myStruct;
myStruct.func = ifunc;
myStruct.hWnd = hWnd;
myStruct.paramArray = ¶mArray; g_DefaultInfoArray.Add(myStruct);
取值语句:
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();
}
函数声明:VOID OpeateDeal::DoOperate(int ifunc, CStringArray *paramArray,HWND sendhwnd)
{
int ilen = paramArray->GetSize();
} paramArray->GetSize(); 这里取出的值是错误的!!!!!!编译没有问题,但是传过去后出现问题,请帮忙看看!!!!!!
myStruct.paramArray = ¶mArray;是放在哪儿的,第二个paramArray是怎么定义的,晕
CString szTemp;
int i=0; while(AfxExtractSubString( szTemp, strparams, i++, g_SplitChar))
{
paramArray.Add(szTemp);
}