📄 totaldraw.c
字号:
/******************************************************************
//Microwindows绘图演示程序.total 2006.3.29
*******************************************************************/
short k=1;
#define MWINCLUDECOLORS
#define mykey MWKEY_KP0
#define INPUTBYTE 20
#include <stdio.h>
#include "nano-X.h"
#include "mwtypes.h"
#include "setmotor.c"
#include "pthread.h"
#include "stdlib.h"
static GR_WINDOW_ID mainwindow;
static GR_WINDOW_ID exitbutton;
static GR_WINDOW_ID drawbutton;
static GR_WINDOW_ID inputtext;
static GR_EVENT event;
static GR_GC_ID gc;
static GR_GC_ID gc2;
int num=0;
void * pth;
void * mortorrun(){
setmotor(num,0);
}
int main(int ac,char **av){
int i=2,j=0;
short key=0,flag=1;
pthread_t th_a;
if (GrOpen()<0){
printf("Can't open graphics!\n");
return 0;
}
mainwindow=GrNewWindow(GR_ROOT_WINDOW_ID,10,10,300,200,3,GREEN,BLUE);
gc=GrNewGC();
gc2=GrNewGC();
GrMapWindow(mainwindow);
GrSetGCForeground(gc2,RED);
drawbutton=GrNewWindow(mainwindow,220,180,30,20,2,YELLOW,BLUE);
GrMapWindow(drawbutton);
GrSetGCForeground(gc,GREEN);
GrSetGCBackground(gc,YELLOW);
GrText(drawbutton,gc,2,15,"ENTER",-1,GR_TFASCII);
GrSelectEvents(drawbutton,GR_EVENT_MASK_EXPOSURE | GR_EVENT_MASK_BUTTON_DOWN);
exitbutton=GrNewWindow(mainwindow,260,180,30,20,2,YELLOW,BLUE);
GrMapWindow(exitbutton);
GrSetGCForeground(gc,GREEN);
GrSetGCBackground(gc,YELLOW);
GrText(exitbutton,gc,2,15,"EXIT",-1,GR_TFASCII);
GrSelectEvents(exitbutton,GR_EVENT_MASK_EXPOSURE | GR_EVENT_MASK_BUTTON_DOWN);
inputtext=GrNewWindow(mainwindow,100,60,100,20,2,YELLOW,BLUE);
GrMapWindow(inputtext);
GrSetGCForeground(gc,GREEN);
GrSetGCBackground(gc,YELLOW);
GrSelectEvents(inputtext,GR_EVENT_MASK_EXPOSURE|GR_EVENT_MASK_KEY_DOWN);
for(;;){
GrCheckNextEvent(&event);
switch(event.type){
case GR_EVENT_TYPE_BUTTON_DOWN:
if(event.button.wid==exitbutton){
if(k!=0){
k=0;
pthread_join(th_a,&pth);
GrClearArea(mainwindow,20,20,200,100,1);
}
else{
// exit_MotorPort();
GrClose();
return 0;
}
}
if(event.button.wid==drawbutton){
// GrSetGCForeground(gc,YELLOW);
key=num%100;
GrClearArea(mainwindow,20,key,200,100,1);
GrFillRect(mainwindow,gc2,120,20,key,20);
// setmotor(num,0);
k=1;
pthread_create(&th_a,NULL,mortorrun,0);
// pthread_join(th_a,&pth);
}
break;
case GR_EVENT_TYPE_KEY_DOWN:
i+=6;
j=i;
if(i>INPUTBYTE){
i-=6;
}
switch(event.keystroke.ch){
case mykey+0:
GrText(inputtext,gc,i,15,"0",-1,GR_TFASCII);
break;
case mykey+1:
GrText(inputtext,gc,i,15,"1",-1,GR_TFASCII);
break;
case mykey+2:
GrText(inputtext,gc,i,15,"2",-1,GR_TFASCII);
break;
case mykey+3:
GrText(inputtext,gc,i,15,"3",-1,GR_TFASCII);
break;
case mykey+4:
GrText(inputtext,gc,i,15,"4",-1,GR_TFASCII);
break;
case mykey+5:
GrText(inputtext,gc,i,15,"5",-1,GR_TFASCII);
break;
case mykey+6:
GrText(inputtext,gc,i,15,"6",-1,GR_TFASCII);
break;
case mykey+7:
GrText(inputtext,gc,i,15,"7",-1,GR_TFASCII);
break;
case mykey+8:
GrText(inputtext,gc,i,15,"8",-1,GR_TFASCII);
break;
case mykey+9:
GrText(inputtext,gc,i,15,"9",-1,GR_TFASCII);
break;
case MWKEY_KP_PERIOD:
if(i>=8){
if(j<INPUTBYTE+6){
i-=6;
}
num-=num%10;
num/=10;
GrClearArea(inputtext,i,5,6,15,0);
if(i>=8){
i-=6;
}
}
break;
case MWKEY_KP_ENTER:
GrText(inputtext,gc,2,15,"E",-1,GR_TFASCII);
break;
case MWKEY_KP_MINUS:
if(flag==-1){
GrText(inputtext,gc,2,15,"+",-1,GR_TFASCII);
}
if(flag==1){
GrClearArea(inputtext,2,5,6,15,0);
GrText(inputtext,gc,2,15,"-",-1,GR_TFASCII);
}
num=-num;
flag=-flag;
if(j<=INPUTBYTE){
i-=6;
}
break;
case MWKEY_KP_PLUS:
GrText(inputtext,gc,2,15,"+",-1,GR_TFASCII);
if(num<=0){
num=-num;
flag=1;
}
if(j<=INPUTBYTE){
i-=6;
}
}
if((event.keystroke.ch>=mykey)&&(event.keystroke.ch<=mykey+9)){
if(j<=INPUTBYTE)
num=num*10+(event.keystroke.ch-mykey);
else{
num -= num%10;
num += (event.keystroke.ch-mykey);
}
}
break;
}
}
GrClose();
return 0;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -