| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 508 人关注过本帖
标题:[求助]大家帮我看看这个菜单代码!
只看楼主 加入收藏
林仲
Rank: 1
等 级:新手上路
帖 子:30
专家分:0
注 册:2004-12-26
收藏
 问题点数:0 回复次数:0 
[求助]大家帮我看看这个菜单代码!
问题: 不能显示全部子菜单,不知道为什么 高人指点看看。。。


*文件(新建、打开、保存、退出),编辑(剪切、复制、删除、查找),格式(自动转换、字体),查看

(状态栏),帮助(帮助主题、关于记事本)*/
#include <graphics.h>
#include <stdio.h>
#include <conio.h>
#include <bios.h>
#include <dos.h>
#include <math.h>
#include <stdlib.h>
#include <process.h>
#define ESC 0x011b
#define UP 0x4800
#define DOWN 0x5000
#define LEFT 0x4b00
#define RIGHT 0x4d00
#define F10 0x4400
#define ENTER 0x1c0d

struct
{
int size;
void *buffer;
}buff[3];

char buffer1[32];

unsigned long offset[45]={
(94*(46-1)+(36-1))*32l,/*文0*/
(94*(28-1)+(94-1))*32l,/*件1*/
(94*(48-1)+(34-1))*32l,/*新2*/
(94*(29-1)+(8-1))*32l,/*建3*/
(94*(20-1)+(82-1))*32l,/*打4*/
(94*(31-1)+(10-1))*32l,/*开5*/
(94*(17-1)+(3-1))*32l,/*保6*/
(94*(20-1)+(70-1))*32l,/*存7*/
(94*(45-1)+(43-1))*32l,/*退8*/
(94*(19-1)+(86-1))*32l,/*出9*/
(94*(17-1)+(64-1))*32l,/*编10*/
(94*(28-1)+(13-1))*32l,/*辑11*/
(94*(28-1)+(84-1))*32l,/*剪12*/
(94*(39-1)+(48-1))*32l,/*切13*/
(94*(24-1)+(20-1))*32l,/*复14*/
(94*(54-1)+(38-1))*32l,/*制15*/
(94*(41-1)+(30-1))*32l,/*删16*/
(94*(19-1)+(93-1))*32l,/*出17*/
(94*(18-1)+(73-1))*32l,/*查18*/
(94*(53-1)+(50-1))*32l,/*找19*/
(94*(24-1)+(81-1))*32l,/*格20*/
(94*(42-1)+(29-1))*32l,/*式21*/
(94*(55-1)+(52-1))*32l,/*自22*/
(94*(22-1)+(15-1))*32l,/*动23*/
(94*(55-1)+(10-1))*32l,/*转24*/
(94*(27-1)+(27-1))*32l,/*换25*/
(94*(55-1)+(54-1))*32l,/*字26*/
(94*(44-1)+(69-1))*32l,/*体27*/
(94*(31-1)+(20-1))*32l,/*看28*/
(94*(55-1)+(20-1))*32l,/*状29*/
(94*(44-1)+(12-1))*32l,/*态30*/
(94*(32-1)+(24-1))*32l,/*栏31*/
(94*(16-1)+(79-1))*32l,/*帮32*/
(94*(54-1)+(90-1))*32l,/*助33*/
(94*(54-1)+(87-1))*32l,/*主34*/
(94*(44-1)+(66-1))*32l,/*题35*/
(94*(25-1)+(56-1))*32l,/*关36*/
(94*(51-1)+(58-1))*32l,/*于37*/
(94*(28-1)+(39-1))*32l,/*记38*/
(94*(42-1)+(34-1))*32l,/*事39*/
(94*(17-1)+(30-1))*32l,/*本40*/
};
void drawmt(unsigned long ft,int x,int y,int color)
{int i,j,k;
FILE *fp;
if ((fp=fopen("hzk16","rb"))==NULL)
{ printf("can't open haz16,please add it");
getch();closegraph(); exit(0);
}
fseek(fp,ft,SEEK_SET);
fread(buffer1,32,1,fp); /*取出汉字32字节的点阵字模存入buffer1中(一个汉字) */
for(i=0;i<16;i++) /*将32位字节的点阵按位在屏幕上打印出来(1:打印,0:不打印), 显示汉字*/
for(j=0;j<2;j++)
for(k=0;k<8;k++)
if (((buffer1[i*2+j]>>(7-k))&0x1)!=NULL)
putpixel(x+8*j+k,y+i,color);
}
start(int x,int y)
{
setcolor(BLUE);/*记事本栏*/
setfillstyle(1,BLUE);
rectangle(0,0,640,30);
floodfill(300,8,BLUE);

drawmt(offset[38],3,2,WHITE);
drawmt(offset[39],3+16,2,WHITE);
drawmt(offset[40],3+16+16,2,WHITE);

setcolor(LIGHTGRAY);/*菜单栏*/
setfillstyle(1,LIGHTGRAY);
rectangle(0,31,640,55);
floodfill(300,50,LIGHTGRAY);

setcolor(WHITE);/*光标*/
setfillstyle(1,WHITE);
rectangle(0,131,70,155);
floodfill(10,140,WHITE);
buff[1].size=imagesize(0,131,70,155);
buff[1].buffer=(void*)malloc(buff[1].size);
getimage(0,131,70,155,buff[1].buffer);

setcolor(LIGHTRED);/*菜单背景色*/
setfillstyle(1,LIGHTRED);
rectangle(0,131,70,155);
floodfill(10,140,LIGHTRED);
buff[0].size=imagesize(0,131,70,155);
buff[0].buffer=(void*)malloc(buff[0].size);
getimage(0,131,70,155,buff[0].buffer);
setcolor(BLACK);
setfillstyle(1,BLACK);
rectangle(0,131,70,155);
floodfill(10,140,BLACK);

putimage(x,y,buff[0].buffer,1);/*文件*/
drawmt(offset[0],x+1,32,BLACK);
drawmt(offset[1],x+1+16,32,BLACK);

putimage(x+71,y,buff[0].buffer,1);/*编辑*/
drawmt(offset[10],x+71+1,32,BLACK);
drawmt(offset[11],x+71+1+16,32,BLACK);

putimage(x+71*2,y,buff[0].buffer,1);/*格式*/
drawmt(offset[20],x+71*2+1,32,BLACK);
drawmt(offset[21],x+71*2+1+16,32,BLACK);

putimage(x+71*3,y,buff[0].buffer,1);/*查看*/
drawmt(offset[18],x+71*3+1,32,BLACK);
drawmt(offset[28],x+71*3+1+16,32,BLACK);

putimage(x+71*4,y,buff[0].buffer,1);/*帮助*/
drawmt(offset[32],x+71*4+1,32,BLACK);
drawmt(offset[33],x+71*4+1+16,32,BLACK);
}

caidan_F(int x,int y)/*文件下拉菜单*/
{
putimage(x,y+=25,buff[0].buffer,1);/*新建*/
drawmt(offset[2],x+1,y+1,BLACK);
drawmt(offset[3],x+1+16,y+1,BLACK);

putimage(x,y+=25,buff[0].buffer,1);/*打开*/
drawmt(offset[4],x+1,y+1,BLACK);
drawmt(offset[5],x+1+16,y+1,BLACK);

putimage(x,y+=25,buff[0].buffer,1);/*保存*/
drawmt(offset[6],x+1,y+25*3+1,BLACK);
drawmt(offset[7],x+1+16,y+25*3+1,BLACK);

putimage(x,y+=25,buff[0].buffer,1);/*退出*/
drawmt(offset[8],x+1,y+1,BLACK);
drawmt(offset[9],x+1+16,y+1,BLACK);

}
caidan_E(int x,int y)/*编辑下拉菜单*/
{

putimage(x,y+=25,buff[0].buffer,1);/*剪切*/
drawmt(offset[12],x+1,y+1,BLACK);
drawmt(offset[13],x+1+16,y+1,BLACK);

putimage(x,y+=25,buff[0].buffer,1);/*复制*/
drawmt(offset[14],x+1,y+1,BLACK);
drawmt(offset[15],x+1+16,y+1,BLACK);

putimage(x,y+=25,buff[0].buffer,1);/*删除*/
drawmt(offset[16],x+1,y+1,BLACK);
drawmt(offset[17],x+71+1+16,y+1,BLACK);

putimage(x,y+=25,buff[0].buffer,1);/*查找*/
drawmt(offset[18],x+1,y+1,BLACK);
drawmt(offset[19],x+1+16,y+1,BLACK);

}


caidan_O(int x,int y)/*格式下拉菜单*/
{

putimage(x,y+=25,buff[0].buffer,1);/*自动转换*/
drawmt(offset[22],x+1,y+1,BLACK);
drawmt(offset[23],x+1+16,y+1,BLACK);
drawmt(offset[24],x+1+16+16,y+1,BLACK);
drawmt(offset[25],x+1+16+16+16,y+1,BLACK);

putimage(x,y+=25,buff[0].buffer,1);/*字体*/
drawmt(offset[26],x+1,y+1,BLACK);
drawmt(offset[27],x+1+16,y+1,BLACK);

}

caidan_V(int x,int y)/*查看下拉菜单*/
{

putimage(x,y+=25,buff[0].buffer,1);/*状态栏*/
drawmt(offset[29],x+1,y+1,BLACK);
drawmt(offset[30],x+1+16,y+1,BLACK);
drawmt(offset[31],x+1+16+16,y+1,BLACK);
}

caidan_H(int x,int y)/*帮助下拉菜单*/
{

putimage(x,y+=25,buff[0].buffer,1);/*帮助主题*/
drawmt(offset[32],x+1,y+1,BLACK);
drawmt(offset[33],x+1+16,y+1,BLACK);
drawmt(offset[34],x+1+16+16,y+1,BLACK);
drawmt(offset[35],x+1+16+16+16,y+1,BLACK);

putimage(x,y+=25,buff[0].buffer,1);/*关于记事本*/
drawmt(offset[36],x+1,y+1,BLACK);
drawmt(offset[37],x+1+16,y+1,BLACK);
drawmt(offset[38],x+1+16+16,y+1,BLACK);
drawmt(offset[39],x+1+16+16+16,y+1,BLACK);
drawmt(offset[40],x+1+16+16+16+16,y+1,BLACK);

}


main()
{
int gd=DETECT,gm,i=0,j=31,key;
initgraph(&gd,&gm,"");
start(i,j);
while(1)
{
key=0;
while(bioskey(1)==0);
key=bioskey(0);
if(key==ESC) exit(0);
if(key==UP){
putimage(i,j,buff[1].buffer,1);
if(j==31&&i==0||j==31&&i==71) putimage(i,j+=25*4,buff[1].buffer,1);
else if(j==31&&i==142||j==31&&i==284) putimage(i,j+=25*2,buff[1].buffer,1);
else if(j==31&&i==213) putimage(i,j+=25,buff[1].buffer,1);
else putimage(i,j-25,buff[1].buffer,1);}
if(key==DOWN){
putimage(i,j,buff[1].buffer,1);
if(j==31&&i==0||j==31&&i==71) putimage(i,j-=25*4,buff[1].buffer,1);
else if(j==31&&i==142||j==31&&i==284) putimage(i,j-=25*2,buff[1].buffer,1);
else if(j==31&&i==213) putimage(i,j-=25,buff[1].buffer,1);
else putimage(i,j+25,buff[1].buffer,1);}
if(key==LEFT){
putimage(i,j,buff[1].buffer,1);
if(i>0)
putimage(i=i-70-1,j,buff[1].buffer,1);
else
putimage(i=i+71*4,j,buff[1].buffer,1);}
if(key==RIGHT){
putimage(i,j,buff[1].buffer,1);
if(i<284)
putimage(i=i+70+1,j,buff[1].buffer,1);
else
putimage(i=i-284,j,buff[1].buffer,1);}
if(key==F10) putimage(i,j,buff[1].buffer,1);
if(i==0&&j==31&&key==ENTER) caidan_F(i,j);
if(i==71&&j==31&&key==ENTER) caidan_E(i,j);
if(i==142&&j==31&&key==ENTER) caidan_O(i,j);
if(i==213&&j==31&&key==ENTER) caidan_V(i,j);
if(i==284&&j==31&&key==ENTER) caidan_H(i,j);
}
closegraph();
}
搜索更多相关主题的帖子: 菜单 代码 
2005-12-26 17:39
快速回复:[求助]大家帮我看看这个菜单代码!
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.019221 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved