结构体强转出现问题,
我写了一个结构体
typedef struct _ScrollGridWidget{
IWidget * meScrollWidget;
IShell *piShell;
IWidget * meGridWidget;
}ScrollGridWidget
然后写了一个Create_ScrollGridWidget(IShell * pIShell,IWidget **pGridListWidget)方法
pMe=MALLOC(sizeof(ScrollGridWidget));
MEMSET(pMe,0,sizeof(ScrollGridWidget));
pMe->piShell=pIShell;
ISHELL_CreateInstance(pIShell,AEECLSID_GRIDWIDGET,(void**)&pMe->meGridWidget);
ISHELL_CreateInstance(pIShell,AEECLSID_SCROLLBARWIDGET,(void**)&pMe->meScrollWidget);
设置属性……(设置了其大小,颜色等)
最后把meScrollWidget接口传出来
又写了一个
int ScrollGridWidget_SetBgImage(ScrollGridWidget *pMe,IImage * bgImage){
IIMAGE_SetParm(bgImage,IPARM_SCALE,240,290);
IWIDGET_SetBGImage(pMe->meGridWidget, bgImage);
}
想用来改变其背景
然后我建了一个测试的APP,
……
IWidget *scrollGridWidget;
……
Create_ScrollGridWidget(pMe->a.m_pIShell,&scrollGridWidget);
IXYCONTAINER_Insert(pMe->mainContainer, scrollWidget, WIDGET_ZNORMAL, &pos);
IXYCONTAINER_QueryInterface(pMe->mainContainer,AEEIID_WIDGET,&containerWdg);
IFORM_SetWidget(pMe->mainForm,WID_FORM,containerWdg);
此时出现了运行正常,出现背景图片,然后加入
tempImage=ISHELL_LoadImage(pMe->meIshell, "m2.jpg");
ScrollGridWidget_SetBgImage((ScrollGridWidget*)scrollWidget,tempImage);
运行正常,但是背景图片没有更换,
调试得到
int ScrollGridWidget_SetBgImage(ScrollGridWidget *pMe,IImage * bgImage)
{
IIMAGE_SetParm(bgImage,IPARM_SCALE,240,290);
IWIDGET_SetBGImage(pMe->meGridWidget, bgImage);
}
中的pMe 的piShell为空指针,貌似meGridWidget的地址也有问题才导致图片为更换,
请教,想遇到这要的问题,把一个结构体作为一个Widget传出,在用到结构体内部的成员时再强转,后使用的做法是否正确,
若正确,我的错误出在哪里?
若不正确,该怎么做?
谢谢!