⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 button.c

📁 LINUX下POS收银系统,可以对货物及工作人员进行管理.近本实现增删改查的功能
💻 C
字号:
#include "button.h"
#include <unistd.h>
#include <malloc.h>


	void show_button(BUTTON * b)
	{
		touchwin(b->b[0]);
		wrefresh(b->b[0]);
		touchwin(b->b[1]);
		wrefresh(b->b[1]);
		touchwin(b->b[2]);
		wrefresh(b->b[2]);
	}
	void set_color(BUTTON *b,int c1,int c2,int c3)
    {
		b->pair_color[0]=c1;
		b->pair_color[1]=c2;
		b->pair_color[2]=c3;
		wbkgd(b->b[0],COLOR_PAIR(c1));
		wbkgd(b->b[1],COLOR_PAIR(c2));
		wbkgd(b->b[2],COLOR_PAIR(c3));
		box(b->b[2],0,0);
		mvwprintw(b->b[2],1,2,"%s",b->str);
		show_button(b);
	}
	void free_button(BUTTON ** b)
	{
		delwin((*b)->b[0]);
		delwin((*b)->b[1]);
		delwin((*b)->b[2]);
		free(*b);
		*b=NULL;
		curs_set(1);
	}
	int attack_button(BUTTON * b,int front,int next,int tab)
	{
		int x=0,y=0;
		int temp=0;
		int sign=1;
		cbreak();
		noecho();
		keypad(b->b[2],TRUE);
		getbegyx(b->b[2],x,y);
		do
		{
			temp=wgetch(b->b[2]);
			switch (temp)
			{
			case 259/*向上键*/:
				if(front != 0)
				{
					set_color(b,b->pair_color[0],b->pair_color[1],b->pair_color[2]);
					echo();
					nocbreak;
					return front;
				}
				continue;
			case 258/*向下键*/:
				if(next != 0)
				{
					set_color(b,b->pair_color[0],b->pair_color[1],b->pair_color[2]);
					echo();
					nocbreak;
					return next;
				}
				continue;
			case 260/*向左键*/:
				if(front != 0)
				{
					set_color(b,b->pair_color[0],b->pair_color[1],b->pair_color[2]);
					echo();
					nocbreak;
					return front;
				}
				continue;
			case 261/*向右键*/:
				if(next != 0)
				{
					set_color(b,b->pair_color[0],b->pair_color[1],b->pair_color[2]);
					echo();
					nocbreak;
					return next;
				}
				continue;
			case 9/*Tab键*/:
				if(tab != 0)
				{
					set_color(b,b->pair_color[0],b->pair_color[1],b->pair_color[2]);
					echo();
					nocbreak;
					return tab;
				}
				continue;
			case 10/*回车键*/:
				mvwin(b->b[2],x+1,y+1);
				show_button(b);
				usleep(250000);
				mvwin(b->b[2],x,y);
				show_button(b);
				set_color(b,b->pair_color[0],b->pair_color[1],b->pair_color[2]);
				echo();
				nocbreak;
				sign=0;
				break;
			default/*其他键*/:
				continue;
			}
		}
		while (sign);
		return 0;
	}
	void pitch_on_button(BUTTON *b)
	{
		int x=0,y=0;
		getbegyx(b->b[2],x,y);
		move(x,y);
		wattron(b->b[2],A_REVERSE);
		wattroff(b->b[2],COLOR_PAIR(b->pair_color[2]));
		mvwprintw(b->b[2],1,1," %s ",b->str);
		wrefresh(b->b[2]);
		curs_set(0);
		wattron(b->b[2],COLOR_PAIR(b->pair_color[2]));
		wattroff(b->b[2],A_REVERSE);

	}
	BUTTON *createButton(int startx,int starty,int h,int l,char *str)
	{
		BUTTON *b=(BUTTON *)malloc(sizeof(BUTTON));
		b->b[0]=newwin(h+1,l+1,startx,starty);
		b->b[1]=newwin(h,l,startx+1,starty+1);
		b->b[2]=newwin(h,l,startx,starty);
		b->str=str;
		b->setColor=set_color;
		b->free=free_button;
		b->attack=attack_button;
		b->show=show_button;
		b->pitch_on=pitch_on_button;
		return b;
	}
/*
int main()
{
	initscr();
	char *str="确定";
	if(has_colors==FALSE)
	{
		endwin();
		exit(0);
	}
	start_color();
	init_pair(1,COLOR_BLACK,COLOR_WHITE);
	init_pair(2,COLOR_RED,COLOR_BLUE);
	init_pair(3,COLOR_BLACK,COLOR_RED);
	wbkgd(stdscr,COLOR_PAIR(1));
	refresh();
//////////////////////////////////////////////////
	BUTTON *b=createButton(10,42,3,8,str);
	b->setColor(b,1,2,3);
	b->show(b);
	b->pitch_on(b);
	b->attack(b,0,0,0);
	b->setColor(b,1,2,3);
	b->free(&b);
//////////////////////////////////////////////////
	attroff(COLOR_PAIR(1));
	attroff(COLOR_PAIR(2));
	attroff(COLOR_PAIR(3));
	endwin();
	return 0;
}
*/

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -