[STM32F1] 一个开源小型GUI移植到STM32F103上
39031|134
|
|
|
评论
请问按键联系起来怎么写。能给些思路吗
@WoodData :这个不是我定义的,是他这个GUI 0.31里面有一句自带得这样得语句。
前面你讲得得我是听懂了。多谢多谢。
后面这玩意我我也觉得奇怪。他本身就是一个函数指针,然后又赋值给一个参数完全不一样得函数指针
@大豆子 :push_pixel=((void*(*)(UG_S16, UG_S16, UG_S16, UG_S16)) gui->driver[DRIVER_FILL_AREA].driver) (x,y,x+actual_char_width-1,y+font->char_height-1); 中push_pixel是函数返回值,而且是void*类型,我不知道你是怎么定义的,这个赋值都没什么意义
@WoodData :这个感觉熟悉,原来这样用的。这样子就懂啦。
还有问题 这是push_pixel得定义,他只有一个参数
void(*push_pixel)(UG_COLOR);
然后后面的函数指针有四个参数,当别人用到push_pixe函数得这个时候,是不是会出现少了三个参数啦
void*(*)(UG_S16, UG_S16, UG_S16, UG_S16)//这是带4个参数的函数指针类型。
typedef void*(*pfun)(UG_S16, UG_S16, UG_S16, UG_S16);
pfun PointDraw;
PointDraw(x1,y1,x2,y2);
看到这个有没有感觉熟悉。。。 (void*(*)(UG_S16, UG_S16, UG_S16, UG_S16))PointDraw(x1,y1,x2,y2)
@WoodData :后面四个参数,前面四个强制转换。一般不都是用一个类型强制就够了嘛。
(UG_S16, UG_S16, UG_S16, UG_S16)) 用了四个强转,我一直在想,是表示后面参数得类型,还是强制转换函数类型,转换函数类型不是用一个就好了嘛
push_pixel=((void*(*)(UG_S16, UG_S16, UG_S16, UG_S16)) //函数类型强制转换
gui->driver[DRIVER_FILL_AREA].driver) //函数名称
(x,y,x+actual_char_width-1,y+font->char_height-1); //4个参数
|
|
|
|
|