hzr0071 发表于 2011-2-4 16:16:47

半天的测试,终于找到一种写菜单的简单方法(不用表链库)

在vc6.0中测试


#include <stdio.h>
struct tst{         //定义菜单结构体

        void (*p)();
        struct tst *next;
};

void function1()    //菜单动作
{

        printf("this is function1\r\n");
}
void function2()
{

        printf("this is function2\r\n");
}

struct tst trs(void (*function)(void),struct tst *hh)//菜单内容传递函数
{struct tst gg;
gg.next=hh;
gg.p=function;
return (gg);

}
void main()
{struct tst aa;
struct tst *s;
struct tst bb;

aa=trs(&function1,&bb);
bb=trs(&function2,&aa);

s=&aa;
(*s).p();
s=(*s).next;
(*s).p();
s=(*s).next;
(*s).p();
s=(*s).next;
(*s).p();
s=(*s).next;
(*s).p();
}


这是运行结果
http://cache.amobbs.com/bbs_upload782111/files_36/ourdev_614604AQIXQ4.png
(原文件名:菜单测试.png)

aureole 发表于 2011-2-4 18:28:33

呵呵

hzr0071 发表于 2011-2-4 20:05:38

回复【1楼】aureoleXiaomaGee
-----------------------------------------------------------------------

楼上您是打酱油的。。。。。

zzjjhh250 发表于 2011-2-4 22:05:08

好像都是这样写的!
用C来封装 类似C++

ERDTxiduoduo 发表于 2011-2-5 09:32:33

额,新手,不懂!

downtoearth 发表于 2011-2-5 11:04:13

mark

fnems 发表于 2011-2-5 11:08:50

还是古老的BBS(23端口的那种)源码靠谱一些

http://cache.amobbs.com/bbs_upload782111/files_36/ourdev_614625LOKWU2.JPG
(原文件名:bbs.JPG)

iloveh 发表于 2011-2-5 11:15:55

一个链表?

flagyan 发表于 2011-2-5 16:18:10

结点是函数指针的单循环链表

hzr0071 发表于 2011-2-6 17:51:23

只是一种方法,这样写不会占用太多内存,只用一个*s作为容器。
不用调用大量的函数库。单片机中简单的菜单也不用动态内存,毕竟实时才是单片机的王道。
如果动态内存可以用类似fat的储存方式,进行扇区标记。

jack_yu 发表于 2011-2-6 18:10:11

mark!

wenfeiexe 发表于 2011-2-6 18:16:51

MARK

bluelool 发表于 2011-2-6 21:49:31

mark

yklstudent 发表于 2011-2-8 20:48:54

这个要研究研究
前天才研究好函数指针
今天就又来这个了
激_情给予我动力啊

aahui 发表于 2011-2-8 23:37:16

不错

guiqiudage 发表于 2011-3-1 15:32:17

mark下

Gorgon_Meducer 发表于 2011-3-1 15:46:47

兄弟,你这不仅仅是一个菜单……是一个状态机链……可以做的事情很多的。
建议仔细挖掘~
一不小心小的状态机调度器/原则就诞生了~
鼓掌~

downtoearth 发表于 2011-3-1 16:48:55

mark

smartzou 发表于 2011-3-1 17:11:04

mark

zzz2603 发表于 2011-3-1 17:26:06

mark

yusufu 发表于 2011-3-1 18:26:08

mark学习下~

xrwf_2009 发表于 2011-3-1 18:38:05

留标记

hzr0071 发表于 2011-3-2 17:49:59

回复【16楼】Gorgon Meducer傻孩子
-----------------------------------------------------------------------

状态机。。。。。。。。。这个没想过。倒是想过封装一个轮片系统

wukaka 发表于 2011-5-11 17:11:23

Gorgon Meducer 傻孩子 老师都鼓掌了,这个要好好研究!

cumtgao 发表于 2011-5-12 11:31:59

好mark

cumtgao 发表于 2011-5-12 11:32:13

好mark

zlutian 发表于 2011-5-12 12:01:48

谢谢,mark

wenjin0386 发表于 2011-5-12 12:04:41

是打酱油的。。。。。

kevinvan 发表于 2011-5-12 12:06:49

mark

zhonghua_li 发表于 2011-5-12 12:07:48

菜单结构里为什么要有菜单字符串呢?根本在于,让父节点可以看到他下面的成员该显示什么,而不需要执行下面的成员函数。

cbmjd 发表于 2011-5-12 23:00:40

学习!!!

AIHHLI 发表于 2011-5-12 23:35:55

哪位兄弟能给个实例……菜鸟不知道怎么用……

shipingjing 发表于 2011-5-13 00:00:58

记号。

my_love 发表于 2011-5-13 09:36:42

mark

yuzr 发表于 2011-5-13 12:15:24

mark

kerrwang1982 发表于 2011-5-13 13:12:20

不会用VC的人帮忙顶。

yaxi1984 发表于 2011-5-13 22:34:05

第一次看到用(*s).p()的…
直接s->p()不就搞定了嘛,弄的多复杂的…

jinjin_xia 发表于 2012-12-11 16:02:22

菜单记号

tianheyun12 发表于 2012-12-17 23:26:53

MARK呵呵

bbssilverkey 发表于 2012-12-18 09:36:04

对,直接s->p()不就搞定了嘛
页: [1]
查看完整版本: 半天的测试,终于找到一种写菜单的简单方法(不用表链库)