int ConfirmAF(TUnit *u, TUnit *t) { char b[200]; int cm; static int last_cm = 0; if (ConAF_always) return TRUE; if (ConAF_table[u->ID]) return FALSE; switch (u->GetType()) { case unBumerang : case unPerseusAlfa : case unPerseusBeta : case unFalanga : case unPagoda : case unFlint : case unHorizont : return TRUE; break; } sprintf(b, SigText[TXT_READYSHOOT], u->GetName(), t->GetName()); MouseShow(); ShowHelpers(); ShowHelpers(); cm = PromtBox(b, cmYes | cmNo | cmAlways); HideHelpers(); HideHelpers(); MouseHide(); if (cm == cmAlways) ConAF_always = TRUE; if (cm == cmNo) ConAF_table[u->ID] = TRUE; last_cm = cm; ConAF_unit = t; ConAF_used = TRUE; return (cm != cmNo); }
int MouseInit() { Mouse.MouseCurs[mcurArrow] = GraphicsDF->get("curarrow"); Mouse.MouseCurs[mcurWait] = GraphicsDF->get("curwait"); Mouse.MouseCurs[mcurSelect] = GraphicsDF->get("cursel"); Mouse.MouseCurs[mcurSelectBig] = GraphicsDF->get("curselb"); Mouse.MouseCurs[mcurSelectSmall] = GraphicsDF->get("cursels"); Mouse.MouseCurs[mcurTarget] = GraphicsDF->get("curtar"); Mouse.MouseCurs[mcurTargetBig] = GraphicsDF->get("curtarb"); Mouse.MouseCurs[mcurTargetSmall] = GraphicsDF->get("curtars"); Mouse.MouseCurs[mcurSupport] = GraphicsDF->get("cursupp"); Mouse.MouseCurs[mcurLoadIn] = GraphicsDF->get("curload"); Mouse.MouseCurs[mcurBuild] = GraphicsDF->get("curbuild"); Mouse.back_buf = memalloc(32 * 32); // Mouse.cachebuf = memalloc(2*32 * 2*32); // Mouse.back = 0; Mouse.Locks = 1; MouseSetCursor(mcurArrow); MouseSetRect(0, 0, RES_X-1, RES_Y-1); MouseSetRatio(iniMouseRatioX, iniMouseRatioY); MouseSetPos(320, 240); MouseShow(); return Mouse.back_buf != NULL; }
void MouseUnfreeze() { if (mouse_painting) return; if (Mouse.FreezeHided) { if (!(--Mouse.FreezeHided)) MouseShow(); } Mouse.SuperLocks--; }
void TContainer::Draw() { MouseHide (); TShape f(Bounds, shptype, 2, EGA_DARKGRAY, EGA_WHITE); f.bg = shpbg; f.Draw(); TGroup::Draw(); MouseShow (); }
void BriefScrollUp(int Num) { int OldOfs = Ofset; if (Ofset-Num < 0) Ofset = 0; else Ofset -= Num; if (OldOfs != Ofset) { MouseHide(); BriefRedrawScr(); MouseShow(); } }
void TTransBox::Hide(int fast) { MouseHide(); if (iniEnhancedGuiOn && (!fast)) for (int i = 0; i < w; i += w/OPEN_STEP) {Draw(i); SDL_Delay(15);} PutBitmap32(x, y, Bkg, w, h); MouseShow(); unlockmem(Buf, w * h); unlockmem(Bkg, w * h); memfree(Bkg); memfree(Buf); }
void BriefScrollDown(int Num) { int OldOfs = Ofset; if (Ofset+Num > BigBufLines-MinNumOfYPixels) Ofset = BigBufLines-MinNumOfYPixels; else Ofset += Num; if (OldOfs != Ofset) { MouseHide(); BriefRedrawScr(); MouseShow(); } }
void DrawFrame(HWND Window,int DrawLeft,int DrawTop, int DrawRight,int DrawBottom) { int SaveColor; struct viewporttype TmpViewPort; int Left,Top,Right,Bottom; MouseHidden(); SaveColor=getcolor(); getviewsettings(&TmpViewPort); WindowGetRealRect(Window,&Left,&Top,&Right,&Bottom); DrawLeft+=Left; DrawTop+=Top; DrawRight+=Left; DrawBottom+=Top; setviewport(DrawLeft,DrawTop,DrawRight,DrawBottom,1); Left-=DrawLeft; Top-=DrawTop; Right-=DrawLeft; Bottom-=DrawTop; setfillstyle(1,FRAMEBKCOLOR); bar(Left,Top,Right,Bottom); setcolor(FRAMECOLOR); Left+=2; Top+=2+CHARHEIGHT/2; Right-=2; Bottom-=2; if (Left<=2) Vline3DDown(DrawLeft,DrawTop,DrawRight,DrawBottom,Left,Top,Bottom); if (Right>=Right-Left-3) Vline3DDown(DrawLeft,DrawTop,DrawRight,DrawBottom,Right-1,Top,Bottom); if (Top<=2+CHARHEIGHT/2) Hline3DDown(DrawLeft,DrawTop,DrawRight,DrawBottom,Left+1,Right,Top); if (DrawBottom>=Bottom-Top-3) Hline3DDown(DrawLeft,DrawTop,DrawRight,DrawBottom,Left+2,Right-1,Bottom); ViewportDisplayString(WindowGetTitle(Window),Left+8,Top-CHARHEIGHT/2, FRAMECOLOR,FRAMEBKCOLOR); setviewport(TmpViewPort.left,TmpViewPort.top,TmpViewPort.right, TmpViewPort.bottom,TmpViewPort.clip); setcolor(SaveColor); MouseShow(); return; }
void TTransBox::Show(int fast) { Buf = (byte*) memalloc(w * h); Bkg = (byte*) memalloc(w * h); lockmem(Buf, w * h); lockmem(Bkg, w * h); GetBitmap32(x, y, Bkg, w, h); MouseHide(); if (iniEnhancedGuiOn && (!fast)) for (int i = w; i > 0; i -= w/OPEN_STEP) {Draw(i); SDL_Delay(15);} memcpy(Buf, Templ, w * h); Draw(0); MouseShow(); }
static long StatusProcedure(HWND Window,HMSG Message,long Param1,long Param2) { switch (Message) { case MOUSELEFTDOUBLE: MessageInsert(1,MENUCOMMAND,MENU_GOTOPAGE,0); return 0L; case WINDOWINIT: case WMPAINT: case REDRAWMESSAGE: case DRAWWINDOW: if (GlobalCurrentPage > 0) { struct viewporttype TmpViewPort; int Left,Top,Right,Bottom; char msg[80]; int pn; pn = PageHandleToNumber(GlobalCurrentPage)+1; if(TotalPage<pn) TotalPage=pn; // ByHance, 96,4.4 sprintf(msg,"ÇáËÉÅÅ°æ: µÚ%dÒ³,¹²%dÒ³",pn,TotalPage); if(fEditor) { //-- "±à¼" --- msg[4]='±'; msg[5]='à'; msg[6]='¼'; msg[7]=''; sprintf(&msg[strlen(msg)]," ÐÐ:%d",CurrentRow); } if (TextIsOverwrite()) strcat(msg," ¸Äд"); WindowDefaultProcedure(Window,Message,Param1,Param2); getviewsettings(&TmpViewPort); MouseHidden(); WindowGetRealRect(Window,&Left,&Top,&Right,&Bottom); setcolor(EGA_BLACK); rectangle(Left,Top,Right,Bottom); setviewport(Left+1,Top+1,Right-1,Bottom-1,1); setfillstyle(1,EGA_LIGHTGRAY); bar(0,0,Right-Left-3,Bottom-Top-3); ViewportDisplayString(msg,5,1,EGA_BLACK,EGA_LIGHTGRAY); setviewport(TmpViewPort.left,TmpViewPort.top,TmpViewPort.right, TmpViewPort.bottom,TmpViewPort.clip); MouseShow(); } break; default: return(WindowDefaultProcedure(Window,Message,Param1,Param2)); } return 0L; }
void MouseSetCursor(int cnum) { if (Mouse.ActCur == cnum) return; Mouse.SuperLocks++; MouseHide(); Mouse.ActCur = cnum; switch (cnum) { case mcurSupport : case mcurArrow : Mouse.xrpt = 0; Mouse.yrpt = 0; break; case mcurWait : Mouse.xrpt = 16; Mouse.yrpt = 16; break; case mcurBuild : case mcurLoadIn : case mcurSelect : case mcurSelectBig : case mcurSelectSmall : case mcurTarget : case mcurTargetBig : case mcurTargetSmall : Mouse.xrpt = 16; Mouse.yrpt = 16; break; } MouseShow(); Mouse.SuperLocks--; }
/** * MouseSetBitmap changes the picture used for the mouse and its hotspot. * * @param hot_spot_x -- x position for hot spot * @param hot_spot_y -- y position for hot spot * @param p_bitmap -- COMPRESSED Bitmap to use * *<!-----------------------------------------------------------------------*/ T_void MouseSetBitmap( T_word16 hot_spot_x, T_word16 hot_spot_y, T_bitmap *p_bitmap) { DebugRoutine("MouseSetBitmap") ; // DebugCheck(p_bitmap != NULL) ; G_hotSpotX = hot_spot_x ; G_hotSpotY = hot_spot_y ; // if (G_mouseShowLevel > 0) // MouseErase() ; MouseHide(); G_bitmap = p_bitmap ; MouseShow() ; // if (G_mouseShowLevel > 0) // MouseDraw() ; DebugEnd() ; }
void TellFileName() // ByHance, 95,12.18 { #define X 32 #define Y 8 #define MAXLEN 26 char name[128]; int SaveColor=getcolor(); struct viewporttype ViewInformation; if(!DebugFileName[0]) strcpy(name,"ÎļþδÃüÃû"); else { int len; strcpy(name,DebugFileName); if( (len=strlen(name))>MAXLEN) // only display 32 chars memmove(name,&name[len-MAXLEN],MAXLEN+1); strupr(name); } getviewsettings(&ViewInformation); MouseHidden(); setviewport(0,0,getmaxx(),getmaxy(),1); setcolor(EGA_BLUE); bar(X,Y,X+MAXLEN*ASC16WIDTH,Y+ASC16HIGHT); DisplayString(name,X,Y,EGA_WHITE,EGA_BLUE); setcolor(SaveColor); setviewport(ViewInformation.left,ViewInformation.top, ViewInformation.right,ViewInformation.bottom, ViewInformation.clip); MouseShow(); #undef Y #undef X #undef MAXLEN } /* TellFileName */
static void DrawLine(int x0,int y0,int x1,int y1,int color) { int SaveColor; struct viewporttype SaveViewPort; MouseHidden(); getviewsettings(&SaveViewPort); SaveColor=getcolor(); setviewport(ScreenX,ScreenY,ScreenX+mXw-1,ScreenY+mYw-1,1); if (color<0) { setwritemode(XOR_PUT); color=-color; } else setwritemode(COPY_PUT); setcolor(color); line(x0,y0,x1,y1); setwritemode(COPY_PUT); setcolor(SaveColor); setviewport(SaveViewPort.left,SaveViewPort.top,SaveViewPort.right, SaveViewPort.bottom,SaveViewPort.clip); MouseShow(); }
static void DisplayVirtualRect(int x1,int y1,int x2,int y2) { #ifdef __TURBOC__ struct linesettingstype SaveLineStyle; getlinesettings(&SaveLineStyle); setlinestyle(4,0x5555,1); #else int old_style; old_style=getlinestyle(); setlinestyle(0x5555); #endif MouseHidden(); rectangle(x1,y1,x2,y2); #ifdef __TURBOC__ setlinestyle(SaveLineStyle.linestyle,SaveLineStyle.upattern, SaveLineStyle.thickness); #else setlinestyle(old_style); #endif MouseShow(); }
void DrawOnScreen(int DrawBackground) { int i; int WordLineCnt; int LocalWordCnt = 0; int LocalPicCnt = 0; int PixColCnt = 0; int ArtCnt = -1; // Citac odstavcu double PixLineCnt; if (DrawBackground != 0) { void *ptr; char buf[20]; sprintf(buf, "%ibriefbk", iniResolution - 0x0100); ptr = GraphicsDF->get(buf); MouseHide(); DrawPicture(ptr); MouseShow(); memfree(ptr); } for (i = 0; i <= NumOfLines; i++) { WordLineCnt = -1; PixLineCnt = 0; do { WordLineCnt++; LocalWordCnt++; if (WordsTypes[LocalWordCnt] == 1) { if (LocalWordCnt != 1) i++; ArtCnt++; PixLineCnt = GetStrWidth(" ", NormalFont); if (LocalWordCnt != 1) PixColCnt += ArticleSpace*2; WordLineCnt = 0; } if (Links[LocalWordCnt] == 0) PutStr (BigDrawBuffer, LinePixels, PixLineCnt, PixColCnt, Words[LocalWordCnt], NormalFont, clrWhite, clrBlack); else { PutStr (BigDrawBuffer, LinePixels, PixLineCnt, PixColCnt, Words[LocalWordCnt], NormalFont, clrRed, clrBlack); LastLink++; LinksXY[LastLink].x1 = PixLineCnt; LinksXY[LastLink].x2 = PixLineCnt+GetStrWidth(Words[LocalWordCnt],NormalFont); LinksXY[LastLink].y1 = PixColCnt; LinksXY[LastLink].y2 = PixColCnt + 16; Links2[LastLink] = Links[LocalWordCnt]; } if (WordsTypes[LocalWordCnt] == 4) { // Obrazky (jee...) LocalPicCnt++; void *ptr; ptr = GraphicsDF->get(PicFiles[LocalPicCnt]); PixColCnt += 32; CopyBmpNZ(BigDrawBuffer, LinePixels, (LinePixels-PicSize[LocalPicCnt].x)/2, PixColCnt, ptr, PicSize[LocalPicCnt].x, PicSize[LocalPicCnt].y); PixColCnt += (PicSize[LocalPicCnt].y-16); memfree(ptr); } PixLineCnt += (double)GetStrWidth(Words[LocalWordCnt], NormalFont); PixLineCnt += LineSpace[i]; if (WordsTypes[LocalWordCnt] == 3) goto LastWord; } while (WordsTypes[LocalWordCnt] != 2); PixColCnt += 16; } LastWord: BriefRedrawScr(); }
static void PlayMusic(unsigned short MusicTable[],int TableLen) { int i; int SaveColor; struct viewporttype ViewInformation; int flash=0; unsigned long *p=(unsigned long *)0x46c; unsigned long now,end,start; SetIntSign(); if(MusicTable==Music2) { flash=1; SaveColor=getcolor(); getviewsettings(&ViewInformation); MouseHidden(); setviewport(0,0,getmaxx(),getmaxy(),1); setcolor(EGA_BLUE); } start=*p; for( i=0; i<TableLen; i++ ) { sound(MusicTable[i]); //----- delay -------- now=*p; end=now+((float)MusicTable[i+TableLen]*18.2/1000+0.5); while(now<end) { //p=(unsigned long *)0x46c; now=*p; if(now-start>=6) { start=now; #define X 32 /* see also, scrollc.c{TellFileName) */ #define Y 8 #define MAXLEN 28 if(flash==1) { flash=2; bar(X,Y,X+MAXLEN*ASC16WIDTH,Y+ASC16HIGHT); } else if(flash==2) { flash=1; DisplayString(DebugFileName,X,Y,EGA_WHITE,EGA_BLUE); } #undef Y #undef X #undef MAXLEN } now=*p; } nosound(); } if(flash) { setcolor(SaveColor); setviewport(ViewInformation.left,ViewInformation.top, ViewInformation.right,ViewInformation.bottom, ViewInformation.clip); MouseShow(); } ClearIntSign(); }
static long MessageBoxProcedure(HWND Window,HMSG Message,long Param1,long Param2) { int ch; int Length,DisplayLeft,DisplayTop,i,DisplayLength,VLength; unsigned char MidString[MAXMESSAGEDISPLAYLENGTH/(CHARWIDTH/2)+1]; unsigned char *p; struct viewporttype TmpViewPort; int Left,Top,Right,Bottom,CharPoint1,CharPoint2; static char BkDoor_st=0; switch (Message) { case DRAWWINDOW: DialogDefaultProcedure(Window,Message,Param1,Param2); MouseHidden(); getviewsettings(&TmpViewPort); WindowGetRealRect(Window,&Left,&Top,&Right,&Bottom); setviewport(Left,Top,Right,Bottom,1); CharPoint1=0; Length=strlen(MessageMessage); VLength=0; DisplayTop=50; while (CharPoint1<Length) { for (CharPoint2=CharPoint1;CharPoint2<Length;CharPoint2++) if (MessageMessage[CharPoint2]=='\n') break; VLength=(CharPoint2-CharPoint1)*CHARWIDTH/2; for (i=0;i<VLength;i+=DisplayLength*(CHARWIDTH/2)) { DisplayLength=MAXMESSAGEDISPLAYLENGTH/(CHARWIDTH/2); if ((i+(CharPoint1+DisplayLength)*(CHARWIDTH/2)<VLength) &&IsInChineseChar(MessageMessage, i/(CHARWIDTH/2)+CharPoint1+DisplayLength)) DisplayLength--; if (DisplayLength>CharPoint2-CharPoint1-i/(CHARWIDTH/2)) DisplayLength=CharPoint2-CharPoint1-i/(CHARWIDTH/2); strncpy(MidString,&MessageMessage[i/(CHARWIDTH/2)+CharPoint1], DisplayLength); MidString[DisplayLength]=0; // DisplayLeft=WindowGetWidth(Window)/2-strlen(MidString)/2*(CHARWIDTH/2); DisplayLeft=(WindowGetWidth(Window)-MAXMESSAGEDISPLAYLENGTH)/2+8; ViewportDisplayString(MidString,DisplayLeft,DisplayTop, MESSAGECOLOR,MESSAGEBKCOLOR); DisplayTop+=CHARHEIGHT+4; } CharPoint1=CharPoint2+1; } setviewport(TmpViewPort.left,TmpViewPort.top,TmpViewPort.right, TmpViewPort.bottom,TmpViewPort.clip); MouseShow(); BkDoor_st=0; break; case MESSAGEBOXNODO: MessageInsert(Window,DIALOGBOXEND,Message,0l); break; case WINDOWINIT: // ByHance, 95,12.19 for back door init BkDoor_st=0; return(DialogDefaultProcedure(Window,Message,Param1,Param2)); case KEYDOWN: ch=toupper(Param1); switch (ch) { HWND MidWindow; default : BkDoor_st=0; break; case 'N': if (BkDoor_st==8) { BkDoor_st++; return(TRUE); } BkDoor_st=0; goto lbl_proc_button; case 'Y': if (BkDoor_st==15) // ...(Music)JERRY { static unsigned char REDTEK_Company[]={ 'À'-4,'í'-5, 'µ'-6,'Â'-7, 'É'-8,'Ì'-9, 'Ó'-10,'Ã'-11, '¼'-12,'¼'-13, 'Ê'-14,'õ'-15, 'Ó'-16,'Ð'-17, 'Ï'-18,'Þ'-19, '¹'-20,'«'-21, 'Ë'-22,'¾'-23, '°'-24,'æ'-25, 'È'-26,'¨'-27, 'Ë'-28,'ù'-29, 'Ó'-30,'Ð'-31 }; strcpy(MidString,DebugFileName); for(i=0;i<28;i++) DebugFileName[i]=REDTEK_Company[i]+i+4; TellFileName(); PlayMusic(Music2,JerryMUSICLen); strcpy(DebugFileName,MidString); TellFileName(); return(TRUE); } lbl_proc_button: MidWindow=WindowGetChild(Window); // while (MidWindow) { if( strlen(WindowGetTitle(MidWindow))==5 && DataofWindows[MidWindow].Title[3]==ch) { ch=WindowGetUserData(MidWindow); MessageInsert(Window,ch,(long)ch,0l); return(TRUE); } MidWindow=WindowGetNext(MidWindow); } break; /*---------- For back door (Press 'REDTEK95')----------*/ case 'R': if(BkDoor_st==13||BkDoor_st==14) BkDoor_st++; else BkDoor_st=1; return(TRUE); case 'E': if (BkDoor_st==1||BkDoor_st==4||BkDoor_st==12) BkDoor_st++; else if(BkDoor_st==10) // 'REDTEKHANCE' { PlayMusic(Music1,HanceMUSICLen); BkDoor_st++; } else BkDoor_st=0; return(TRUE); case 'D': if (BkDoor_st==2) BkDoor_st++; else BkDoor_st=0; return(TRUE); case 'T': if (BkDoor_st==3) BkDoor_st++; else BkDoor_st=0; return(TRUE); case 'K': if (BkDoor_st==5) BkDoor_st++; else BkDoor_st=0; return(TRUE); case 'H': case '9': if (BkDoor_st==6) BkDoor_st++; else BkDoor_st=0; return(TRUE); case 'A': if (BkDoor_st==7) BkDoor_st++; else BkDoor_st=0; return(TRUE); case 'C': if (BkDoor_st==9) BkDoor_st++; else BkDoor_st=0; return(TRUE); case 'J': if (BkDoor_st==11) BkDoor_st++; else BkDoor_st=0; return(TRUE); case '5': if (BkDoor_st==7) // that is it! { MouseHidden(); getviewsettings(&TmpViewPort); WindowGetRealRect(Window,&Left,&Top,&Right,&Bottom); setviewport(Left,Top,Right,Bottom,1); setcolor(MESSAGEBKCOLOR); Bottom-=30+SYSBUTTONWIDTH*3/2; // left for button height VLength=Bottom-Top; if(VLength<3*(ASC16HIGHT+4)+50) { // "±±¾©ÀíµÂÉÌÓü¼ÊõÓÐÏÞ¹«Ë¾°æȨËùÓÐ" p=&MidString[0]; *p++='±±'>>8; *p++='±±'&0xff; *p++='¾©'>>8; *p++='¾©'&0xff; *p++='Àí'>>8; *p++='Àí'&0xff; *p++='µÂ'>>8; *p++='µÂ'&0xff; *p++='ÉÌ'>>8; *p++='ÉÌ'&0xff; *p++='ÓÃ'>>8; *p++='ÓÃ'&0xff; *p++='¼¼'>>8; *p++='¼¼'&0xff; *p++='Êõ'>>8; *p++='Êõ'&0xff; *p=0; strcat(MidString,"ÓÐÏÞ¹«Ë¾°æȨËùÓÐ"); } else { p=&MidString[0]; *p++='±±'>>8; *p++='±±'&0xff; *p++='¾©'>>8; *p++='¾©'&0xff; *p++='Àí'>>8; *p++='Àí'&0xff; *p++='µÂ'>>8; *p++='µÂ'&0xff; *p++='ÉÌ'>>8; *p++='ÉÌ'&0xff; *p++='ÓÃ'>>8; *p++='ÓÃ'&0xff; *p++='¼¼'>>8; *p++='¼¼'&0xff; *p++='Êõ'>>8; *p++='Êõ'&0xff; *p++='ÓÐ'>>8; *p++='ÓÐ'&0xff; *p++='ÏÞ'>>8; *p++='ÏÞ'&0xff; *p++='¹«'>>8; *p++='¹«'&0xff; *p++='˾'>>8; *p++='˾'&0xff; *p=0; DisplayLeft=WindowGetWidth(Window)/2 -strlen(MidString)/2*(CHARWIDTH/2); DisplayTop=VLength-3*(ASC16HIGHT+4); // clear this area bar(4,DisplayTop-8,WindowGetWidth(Window)-4, DisplayTop+3*(ASC16HIGHT+4)+4); ViewportDisplayString(MidString,DisplayLeft,DisplayTop, MESSAGECOLOR,MESSAGEBKCOLOR); MidString[0]='('; MidString[1]='R'; MidString[2]='E'; MidString[3]='D'; MidString[4]='T'; MidString[5]='E'; MidString[6]='K'; MidString[7]=')'; p=&MidString[8]; *p++='°æ'>>8; *p++='°æ'&0xff; *p++='Ȩ'>>8; *p++='Ȩ'&0xff; *p++='Ëù'>>8; *p++='Ëù'&0xff; *p++='ÓÐ'>>8; *p++='ÓÐ'&0xff; *p=0; DisplayLeft=WindowGetWidth(Window)/2 -strlen(MidString)/2*(CHARWIDTH/2); DisplayTop=VLength-2*(ASC16HIGHT+4); ViewportDisplayString(MidString,DisplayLeft,DisplayTop, MESSAGECOLOR,MESSAGEBKCOLOR); { unsigned char author[]="ÖÆ×÷:º«Õ×Ç¿¡¢ÖÜÞÈ¡¢ÑîÏþËÉ"; strcpy(MidString,author); } } DisplayTop=VLength-(ASC16HIGHT+4); DisplayLeft=WindowGetWidth(Window)/2 -strlen(MidString)/2*(CHARWIDTH/2); // clear this area bar(4,DisplayTop-4, WindowGetWidth(Window)-4,DisplayTop+ASC16HIGHT+4); ViewportDisplayString(MidString,DisplayLeft,DisplayTop, MESSAGECOLOR,MESSAGEBKCOLOR); setviewport(TmpViewPort.left,TmpViewPort.top,TmpViewPort.right, TmpViewPort.bottom,TmpViewPort.clip); MouseShow(); }
void InitSubPage(HWND Window,int pt_w,int pt_h,int pg_w,int pg_h) { HWND Mid; int xw,yw,i,j; char p[40]; int SaveColor; struct viewporttype SaveViewPort; WaitMessageEmpty(); MouseHidden(); getviewsettings(&SaveViewPort); SaveColor=getcolor(); Mid=WindowGetFather(Window); ScreenDispWidth=WindowGetWidth(Window)-10; ScreenDispHeight=WindowGetHeight(Window)-10; WinX=ScreenX=WindowGetLeft(Window)+WindowGetLeft(Mid); WinY=ScreenY=WindowGetTop(Window)+WindowGetTop(Mid); setviewport(WinX,WinY,WinX+ScreenDispWidth+9,WinY+ScreenDispHeight+9,1); setwritemode(COPY_PUT); setcolor(EGA_WHITE); bar(0,0,ScreenDispWidth+9,ScreenDispHeight+9); SCRscaleX=SubP->TotalX/ScreenDispWidth*1.05; SCRscaleY=SubP->TotalY/ScreenDispHeight*1.05; if (SCRscaleX>SCRscaleY) SCRscaleY=SCRscaleX; else SCRscaleX=SCRscaleY; xw=mXw=pg_w/SCRscaleX; yw=mYw=pg_h/SCRscaleY; ScreenX=ScreenX+5+(ScreenDispWidth-mXw)/2; ScreenY=ScreenY+5+(ScreenDispHeight-mYw)/2; //setcolor(EGA_DARKGRAY); //gray setcolor(12); setviewport(0,0,getmaxx(),getmaxy(),1); rectangle(ScreenX,ScreenY,ScreenX+xw,ScreenY+yw); setviewport(WinX,WinY,WinX+ScreenDispWidth+9,WinY+ScreenDispHeight+9,1); for (i=0;i<PG.Blocks;i++) { int x0,x1,y0,y1; mXw=ScreenX-WinX; mYw=ScreenY-WinY; x0=-PG.PageBlock[i].Xoffset*1000/25.4/SCRscaleX+mXw; y0=-PG.PageBlock[i].Yoffset*1000/25.4/SCRscaleY+mYw; x1=x0+pt_w/SCRscaleX; y1=y0+pt_h/SCRscaleY; if (PG.PageBlock[i].Reveser&1) setcolor(14); else setcolor(11); rectangle(x0,y0,x1,y1); } setwritemode(COPY_PUT); setcolor(SaveColor); setviewport(SaveViewPort.left,SaveViewPort.top,SaveViewPort.right, SaveViewPort.bottom,SaveViewPort.clip); MouseShow(); }
long DialogDefaultProcedure(HWND Window,HMSG Message,long Param1,long Param2) { switch (Message) { case KEYDOWN: switch (MAKELO(Param1)) { case TAB: WindowTableOrderNext(Window); break; case SHIFT_TAB: WindowTableOrderPrev(Window); break; case ESC: Param1=DIALOGBOXCANCEL; //MessageInsert(Window,DIALOGBOXCANCEL,Param1,Param2); //break; goto proc_msg; case ENTER: Param1=DIALOGBOXOK; //MessageInsert(Window,DIALOGBOXOK,Param1,Param2); proc_msg: MessageInsert(Window,(HMSG)Param1,Param1,Param2); break; } break; case REDRAWMESSAGE: Param2=MAKELONG( WindowGetWidth(Window),WindowGetHeight(Window) ); WindowDefaultProcedure(Window,Message,0L,Param2); break; case WINDOWCLOSE: Param1=DIALOGBOXCANCEL; case DIALOGBOXEND: MessageGo(Window,WINDOWQUIT,Message,0l); GlobalNotDisplay=1; WindowDefaultProcedure(Window,WINDOWCLOSE,Param1,Param2); GlobalNotDisplay=0; //------ ByHance, 96,1.8 --- if(DialogImageN) { int Left,Top,Right,Bottom; struct viewporttype TmpViewPort; MouseHidden(); getviewsettings(&TmpViewPort); WindowGetRealRect(1,&Left,&Top,&Right,&Bottom); setviewport(Left,Top,Right,Bottom,1); putimage( WindowGetLeft(Window)-1,WindowGetTop(Window)-1, DialogImage[--DialogImageN], COPY_PUT ); free(DialogImage[DialogImageN]); setviewport(TmpViewPort.left,TmpViewPort.top,TmpViewPort.right, TmpViewPort.bottom,TmpViewPort.clip); MouseShow(); } return(Param1); case DIALOGBOXOK: if (WindowDefaultProcedure(Window,Message,Param1,Param2)==FALSE) break; case DIALOGBOXCANCEL: MessageInsert(Window,DIALOGBOXEND,Message,0l); break; case MOUSEMOVE: DialogMouseMove(Window,Message,Param1,Param2); // ByHance, 95,12.6 break; default: return(WindowDefaultProcedure(Window,Message,Param1,Param2)); } return(TRUE); }
static void DrawUserPage(float x,float y,float sx,float sy,int r,int color) { #define PN 10 char xy[][2]={{0,6},{0,3},{0,1},{1,0},{2,0},{3,1},{3,2},{2,3},{0,3},{3,6}}; char xy2[10][2]; int SaveColor,i; struct viewporttype SaveViewPort; int mx,my,xw,yw; float xs,ys; MouseHidden(); getviewsettings(&SaveViewPort); SaveColor=getcolor(); setviewport(ScreenX,ScreenY,ScreenX+mXw-1,ScreenY+mYw-1,1); if (!color) { setwritemode(COPY_PUT); setcolor(EGA_WHITE); bar(0,0,mXw-1,mYw-1); setwritemode(XOR_PUT); setcolor(abs(LEADCOLOR)); for (i=0;i<ColLeadNum;i++) { mx=(int)(ColLead[i]/SCRscaleX); line(mx,0,mx,mYw); } for (i=0;i<RowLeadNum;i++) { my=(int)(RowLead[i]/SCRscaleY); line(0,my,mXw,my); } } else { r=r%4+(GlobalReverse&1)*4; for (i=0;i<PN;i++) { switch(r) { case 0: xy2[i][0]=xy[i][0]; xy2[i][1]=xy[i][1]; break; case 1: xy2[i][0]=6-xy[i][1]; xy2[i][1]=xy[i][0]; break; case 2: xy2[i][0]=3-xy[i][0]; xy2[i][1]=6-xy[i][1]; break; case 3: xy2[i][0]=xy[i][1]; xy2[i][1]=3-xy[i][0]; break; case 4: xy2[i][0]=3-xy[i][0]; xy2[i][1]=xy[i][1]; break; case 5: xy2[i][0]=xy[i][1]; xy2[i][1]=xy[i][0]; break; case 6: xy2[i][0]=xy[i][0]; xy2[i][1]=6-xy[i][1]; break; case 7: xy2[i][0]=6-xy[i][1]; xy2[i][1]=3-xy[i][0]; break; } } if (color<0) { setwritemode(XOR_PUT); color=-color; } else setwritemode(COPY_PUT); setcolor(color); mx=x/SCRscaleX; my=y/SCRscaleY; xw=PageW*sx/SCRscaleX; yw=PageH*sy/SCRscaleY; if (r&1) { myrectangle(mx,my,mx+yw,my+xw); mx=mx+yw/4; my=my+xw/4; ys=(float)xw/6; xs=(float)yw/12; } else { myrectangle(mx,my,mx+xw,my+yw); mx=mx+xw/4; my=my+yw/4; xs=(float)xw/6; ys=(float)yw/12; } for (i=0;i<PN-1;i++) { line(mx+xs*xy2[i][0],my+ys*xy2[i][1],mx+xs*xy2[(i+1)%PN][0],my+ys*xy2[(i+1)%PN][1]); if (i<PN-2) line(mx+xs*xy2[i+1][0],my+ys*xy2[i+1][1],mx+xs*xy2[(i+1)%PN][0],my+ys*xy2[(i+1)%PN][1]); } line(mx+xs*xy2[8][0],my+ys*xy2[8][1],mx+xs*xy2[8][0],my+ys*xy2[8][1]); } setwritemode(COPY_PUT); setcolor(SaveColor); setviewport(SaveViewPort.left,SaveViewPort.top,SaveViewPort.right, SaveViewPort.bottom,SaveViewPort.clip); MouseShow(); }
void PageDraw(HPAGE PageHandle,HWND Window,int DrawLeft, int DrawTop,int DrawRight,int DrawBottom) { int SaveColor; struct viewporttype TmpViewPort; #ifdef __TURBOC__ struct linesettingstype SaveLineStyle; #else unsigned short old_style; #endif ORDINATETYPE BoxDrawLeft,BoxDrawTop,BoxDrawRight,BoxDrawBottom; ORDINATETYPE BoxXY[2*MAXPOLYGONNUMBER]; HBOX HBox; Pages *MidPage; int Left,Top,Right,Bottom; int PageLeft,PageTop,PageRight,PageBottom; WindowGetRect(Window,&Left,&Top,&Right,&Bottom); if (!RectangleIsInRectangle(DrawLeft,DrawTop,DrawRight,DrawBottom, Left,Top,Right,Bottom)) return; if (DrawRight>=Right-Left) DrawRight=Right-Left-1; if (DrawBottom>=Bottom-Top) DrawBottom=Bottom-Top-1; if (DrawLeft<0) DrawLeft=0; if (DrawTop<0) DrawTop=0; BoxDrawLeft=WindowXToUserX(DrawLeft); BoxDrawTop=WindowYToUserY(DrawTop); BoxDrawRight=WindowXToUserX(DrawRight); BoxDrawBottom=WindowYToUserY(DrawBottom); MidPage=HandleLock(ItemGetHandle(PageHandle)); if (MidPage==NULL) return; PageLeft=UserXToWindowX(0); PageTop=UserYToWindowY(0); PageRight=UserXToWindowX(PageGetPageWidth(MidPage)); PageBottom=UserYToWindowY(PageGetPageHeight(MidPage)); if(GlobalTextBlockStart<GlobalTextBlockEnd) // must clear now block DisplayBlock(GlobalBoxHeadHandle,GlobalTextBlockStart,GlobalTextBlockEnd); SaveColor=getcolor(); MouseHidden(); TextCursorOff(); getviewsettings(&TmpViewPort); setviewport(Left,Top,Right,Bottom,1); /*---- clear page -----*/ setfillstyle(1,EGA_WHITE); bar(DrawLeft,DrawTop,DrawRight,DrawBottom); /*--- draw page border ---*/ setcolor(PAGEBORDERCOLOR); rectangle(PageLeft,PageTop,PageRight,PageBottom); if(!IsInGlobalBrowser()) DrawPageFootHead(PageHandle,TRUE,TRUE); if(!fEditor) { #ifdef __TURBOC__ getlinesettings(&SaveLineStyle); setlinestyle(4,0x5555,1); #else old_style=getlinestyle(); setlinestyle(0xffff); #endif /*--- draw page shadow ---*/ setcolor(EGA_DARKGRAY); line(((PageLeft>0)?PageLeft:0)+3,PageBottom+1,PageRight+3,PageBottom+1); line(((PageLeft>0)?PageLeft:0)+3,PageBottom+2,PageRight+3,PageBottom+2); line(((PageLeft>0)?PageLeft:0)+3,PageBottom+3,PageRight+3,PageBottom+3); line(PageRight+1,((PageTop>0)?PageTop:0)+3,PageRight+1,PageBottom+3); line(PageRight+2,((PageTop>0)?PageTop:0)+3,PageRight+2,PageBottom+3); line(PageRight+3,((PageTop>0)?PageTop:0)+3,PageRight+3,PageBottom+3); /*--- draw box align line ---*/ setcolor(EGA_LIGHTBLUE); /*------------ use 0x5555 -- #ifdef __TURBOC__ setlinestyle(4,0x5f5f,1); #else setlinestyle(0x5f5f); #endif ----------------*/ setlinestyle(0x8888); PageLeft=UserXToWindowX(PageGetMarginLeft(MidPage))-1; PageTop=UserYToWindowY(PageGetMarginTop(MidPage))-1; PageRight=UserXToWindowX(PageGetPageWidth(MidPage)- PageGetMarginRight(MidPage))+1; PageBottom=UserYToWindowY(PageGetPageHeight(MidPage)- PageGetMarginBottom(MidPage))+1; line(UserXToWindowX(0),PageTop, UserXToWindowX(PageGetPageWidth(MidPage)),PageTop); line(UserXToWindowX(0),PageBottom, UserXToWindowX(PageGetPageWidth(MidPage)),PageBottom); line(PageLeft,UserYToWindowY(0),PageLeft, UserYToWindowY(PageGetPageHeight(MidPage))); line(PageRight,UserYToWindowY(0),PageRight, UserYToWindowY(PageGetPageHeight(MidPage))); #ifdef __TURBOC__ setlinestyle(SaveLineStyle.linestyle,SaveLineStyle.upattern, SaveLineStyle.thickness); #else setlinestyle(old_style); #endif } HandleUnlock(ItemGetHandle(PageHandle)); setcolor(EGA_BLACK); HBox=PageGetBoxHead(PageHandle); while (HBox) { ORDINATETYPE BoxLeft,BoxTop,BoxRight,BoxBottom; TextBoxs *MidBox; int BoxDots; MidBox=HandleLock(ItemGetHandle(HBox)); if (MidBox==NULL) break; BoxGetPolygonDrawBorder((Boxs *)MidBox,&BoxDots,BoxXY); PolygonGetMinRectangle(BoxDots,BoxXY,&BoxLeft,&BoxTop,&BoxRight,&BoxBottom); if (RectangleIsInRectangle(BoxDrawLeft,BoxDrawTop,BoxDrawRight,BoxDrawBottom, BoxLeft,BoxTop,BoxRight,BoxBottom)||TextBoxGetBoxType(MidBox)==TEXTBOX) { HBOX LinkBox; BoxDraw(HBox, (HBox==GlobalBoxHeadHandle)?DRAWBORDERWITHRECATNGLE: DRAWVIRTUALBORDOR); if (TextBoxGetBoxType(MidBox)==TEXTBOX && (GlobalBoxTool==IDX_UNLINK||GlobalBoxTool==IDX_LINK) && (LinkBox=TextBoxGetPrevLinkBox(MidBox))!=0 ) { ORDINATETYPE Left2,Top2,Right2,Bottom2; BoxGetRect(HBox,&BoxLeft,&BoxTop,&BoxRight,&BoxBottom); BoxXY[0]=BoxLeft; BoxXY[1]=BoxTop; BoxPolygonRotate(1,BoxXY,(PictureBoxs *)MidBox); BoxPolygonToWindowXY(1,BoxXY); BoxLeft=BoxXY[0]; BoxTop=BoxXY[1]; if(ItemGetFather(LinkBox)==PageHandle) { BoxGetRect(LinkBox,&Left2,&Top2,&Right2,&Bottom2); BoxXY[0]=Right2; BoxXY[1]=Bottom2; BoxPolygonRotate(1,BoxXY,HandleLock(ItemGetHandle(LinkBox))); HandleUnlock(ItemGetHandle(LinkBox)); BoxPolygonToWindowXY(1,BoxXY); } else { BoxXY[0]=getmaxx(); BoxXY[1]=0; // screen (Right,Top) } line(BoxLeft,BoxTop,BoxXY[0],BoxXY[1]); } } HandleUnlock(ItemGetHandle(HBox)); HBox=ItemGetNext(HBox); } if (GlobalGroupGetSign()) GroupDrawAllBorder(DRAWXORBORDER); setviewport(TmpViewPort.left,TmpViewPort.top,TmpViewPort.right, TmpViewPort.bottom,TmpViewPort.clip); setcolor(SaveColor); MouseShow(); return; }
void ShowCredits() { char *buf; char line[200]; void *ptr, *ptr2; char *c; int i, curln, lastchar; int oldvol = MusicVolume; TEvent e; SetVolume(EffectsVolume, SpeechVolume, 64); MouseHide(); ClearScr(); PlayMusic("solution.s3m"); do {GetEvent(&e);} while (e.What != evNothing); e.What = evNothing; ptr = memalloc(RES_X * RES_Y); memset(ptr, 0, 800*600); ptr2 = GraphicsDF->get("mmnulogo"); memcpy(ptr, ptr2, 800 * 140); memfree(ptr2); buf = (char*) TextsDF->get("credits"); ptr2 = memalloc(RES_X * RES_Y); memcpy(ptr2, ptr, RES_X * RES_Y); DrawPicture(ptr); for (curln = 520; TRUE; curln -= 1) { i = 0; line[0] = 0; lastchar = 0; for (c = buf; *c != 0; c++) { if (*c == '\n') { line[lastchar] = 0; if (strcmp(line, "END") == 0) break; i++; if (strlen(line) == 0) continue; if ((curln + 20 * i > 60) && (curln + 20 * i < 540)) PutStr(ptr, 800, 400 - GetStrWidth(line+1, NormalFont)/2, curln + 20 * i, line+1, NormalFont, (line[0] == '*') ? 9/*red*/ : 2/*white*/, 0); line[0] = 0; lastchar = 0; } else line[lastchar++] = *c; } PutBitmap(0, 220, ((char*)ptr) + 220 * 800, 800, 300); memcpy(ptr, ptr2, 800*600); SDL_Delay(20); GetEvent(&e); if ((e.What == evKeyDown) || (e.What == evMouseDown)) break; } memfree(ptr); memfree(ptr2); memfree(buf); MouseShow(); ClearScr(); SetVolume(EffectsVolume, SpeechVolume, oldvol); }
static int CreatDialogBox(Dialogs *DialogItems, HWND *DefaultActiveWindow) { HWND MidWindow; char *pImage; int i,j,TotalItem,CurrentDefaultClass=0; Function *fun=(DialogItems[0]).ItemProcedure; if(DialogImageN>=MAXIMAGENUM) return -1; i=imagesize( DialogItems[0].ItemLeft-1,DialogItems[0].ItemTop-1, DialogItems[0].ItemRight,DialogItems[0].ItemBottom ); pImage=(char *)malloc(i); //if(pImage==NULL) if(pImage<0x1000) { ReportMemoryError("creatdialog"); return -1; } { int Left,Top,Right,Bottom; struct viewporttype TmpViewPort; MouseHidden(); getviewsettings(&TmpViewPort); WindowGetRealRect(1,&Left,&Top,&Right,&Bottom); setviewport(Left,Top,Right,Bottom,1); getimage( DialogItems[0].ItemLeft-1,DialogItems[0].ItemTop-1, DialogItems[0].ItemRight,DialogItems[0].ItemBottom, pImage); setviewport(TmpViewPort.left,TmpViewPort.top,TmpViewPort.right, TmpViewPort.bottom,TmpViewPort.clip); MouseShow(); } if (fun==NULL) fun=(Function *)DialogDefaultProcedure; MidWindow=CreatWindow((DialogItems[0]).ItemLeft,(DialogItems[0]).ItemTop, (DialogItems[0]).ItemRight, (DialogItems[0]).ItemBottom,0, fun, 2|16|WindowSetIsFocusAlways, (DialogItems[0]).ItemTitle,NULL); if(MidWindow<0) // ByHnace { free(pImage); return(MidWindow); } DialogImage[DialogImageN++]=pImage; if ((DialogItems[0]).ItemType!=GLOBALITEM) return(MidWindow); else TotalItem=(DialogItems[0]).ItemTotal; for (i=1,j=0;j<TotalItem;j++) i+=CreatSubDialogBox(&DialogItems[i],MidWindow,DefaultActiveWindow, &CurrentDefaultClass); return(MidWindow); }
static void InitPrintCut(void) { HWND Window,Mid; int xw,yw,i,j; char p[40]; int SaveColor; struct viewporttype SaveViewPort; BEGINOK; //WaitMessageEmpty(); MouseHidden(); getviewsettings(&SaveViewPort); SaveColor=getcolor(); SetPrinter(-CurrentPrinter); Window=PrintCutWin[wDISPWIN]; Mid=WindowGetFather(Window); ScreenDispWidth=WindowGetWidth(Window)-10; ScreenDispHeight=WindowGetHeight(Window)-10; WinX=ScreenX=WindowGetLeft(Window)+WindowGetLeft(Mid); WinY=ScreenY=WindowGetTop(Window)+WindowGetTop(Mid); setviewport(WinX,WinY,WinX+ScreenDispWidth+9,WinY+ScreenDispHeight+9,1); setwritemode(COPY_PUT); setcolor(EGA_WHITE); //setcolor(11); bar(0,0,ScreenDispWidth+9,ScreenDispHeight+9); PaperW=(float)(printer->xpixel)*25.4/PrinterDPI; PaperH=(float)(printer->ypixel)*25.4/PrinterDPI; SCRscaleX=PaperW/ScreenDispWidth; SCRscaleY=PaperH/ScreenDispHeight; if (SCRscaleX>SCRscaleY) SCRscaleY=SCRscaleX; else SCRscaleX=SCRscaleY; xw=mXw=PaperW/SCRscaleX; yw=mYw=PaperH/SCRscaleY; ScreenX=ScreenX+5+(ScreenDispWidth-mXw)/2; ScreenY=ScreenY+5+(ScreenDispHeight-mYw)/2; //setwritemode(COPY_PUT); setcolor(EGA_DARKGRAY); //gray setviewport(0,0,getmaxx(),getmaxy(),1); rectangle(ScreenX-1,ScreenY-1,ScreenX+xw,ScreenY+yw); //setviewport(ScreenX-1,ScreenY-1,ScreenX+xw,ScreenY+yw,1); //rectangle(ScreenX-1,ScreenY-1,ScreenX+xw,ScreenY+yw); //setviewport(ScreenX,ScreenY,ScreenX+mXw-1,ScreenY+mYw-1,1); GetUserFrame(0,&xw,&yw); PageWI=xw; PageHI=yw; PageW=xw*25.4/1000; PageH=yw*25.4/1000; sprintf(p,"%4d",(int)(PaperW+.5)); GetXY(3,&i,&j); DispXY(i-10,j,p,COLORP); sprintf(p,"%4d",(int)(PaperH+.5)); GetXY(4,&i,&j); DispXY(i-10,j,p,COLORP); setwritemode(COPY_PUT); setcolor(SaveColor); setviewport(SaveViewPort.left,SaveViewPort.top,SaveViewPort.right, SaveViewPort.bottom,SaveViewPort.clip); MouseShow(); }
long ListBoxDefaultProcedure(HWND Window,HMSG Message,long Param1,long Param2) { struct viewporttype TmpViewPort; int i,Length,key; HWND MidWindow; int DisplayItem; int DisplayWidth; char MidString[100]; int Left,Top,Right,Bottom; int SaveColor; switch (Message) { case WINDOWQUIT: ListHandleFree(); break; case KEYSTRING: break; case KEYDOWN: switch (MAKELO(Param1)) { case HOME: Param2=ListGetCurrent(WindowList(Window)); goto lbl_upward; case PGUP: Param2=ListGetHeight(WindowList(Window)); goto lbl_upward; case UP: Param2=1; lbl_upward: Length=Param2; if (ListGetCurrent(WindowList(Window))-Length<0) Length=ListGetCurrent(WindowList(Window)); if (!Length) { //Alarm(); break; } Length=-Length; goto lbl_process_up_down; case END: Param2=ListGetTotal(WindowList(Window))-1 -ListGetCurrent(WindowList(Window)); goto lbl_downward; case PGDN: Param2=ListGetHeight(WindowList(Window)); goto lbl_downward; case DOWN: Param2=1; lbl_downward: Length=Param2; if (ListGetCurrent(WindowList(Window))+Length>= ListGetTotal(WindowList(Window))-1) Length=ListGetTotal(WindowList(Window))-1 -ListGetCurrent(WindowList(Window)); if (!Length) { // Alarm(); break; } lbl_process_up_down: ListIncCurrent(WindowList(Window),Length); MessageInsert(Window,ITEMSELECT, ListGetCurrent(WindowList(Window)),Window); #ifdef USE_SCROLL MidWindow=GetVVScroll(Window); if (MidWindow) { i=WindowGetHeight(Window)-3*SYSSCROLLWIDTH-2; i*=ListGetCurrent(WindowList(Window)); // i/=ListGetTotal(WindowList(Window)); i/=ListGetTotal(WindowList(Window))-1; i=i-WindowGetTop(MidWindow)+SYSSCROLLWIDTH; //*------ if(WindowGetBottom(MidWindow)+i> WindowGetHeight(WindowGetFather(MidWindow))-2-SYSSCROLLWIDTH) i=WindowGetHeight(WindowGetFather(MidWindow))-2 -SYSSCROLLWIDTH-WindowGetBottom(MidWindow); //--------------------------*/ MessageInsert(MidWindow,WINDOWMOVE,0l,i); } #endif if (!ListVScroll(Window)) { DisplayItem=ListGetCurrent(WindowList(Window)) -ListGetTop(WindowList(Window)); // MessageInsert(Window,WMPAINT,MAKELONG(0, MessageInsert(Window,REDRAWMESSAGE,MAKELONG(0, (DisplayItem-Length)*CHARHEIGHT), MAKELONG(0,(DisplayItem-Length+1))*CHARHEIGHT); // MessageInsert(Window,WMPAINT,MAKELONG(0,DisplayItem*CHARHEIGHT), MessageInsert(Window,REDRAWMESSAGE,MAKELONG(0,DisplayItem*CHARHEIGHT), MAKELONG(0,(DisplayItem+1)*CHARHEIGHT)); } break; case TAB: WindowTableOrderNext(Window); break; case SHIFT_TAB: WindowTableOrderPrev(Window); break; case ENTER: #ifdef USE_SCROLL if (!WindowIsChildless(Window)) MessageGo(WindowGetChild(Window),WINDOWCLOSE,0l,0l); #endif MessageInsert(Window,LISTBOXCONFIRM,0L,0L); break; case ESC: #ifdef USE_SCROLL // Added ByHance, 96,4.2 if (!WindowIsChildless(Window)) MessageGo(WindowGetChild(Window),WINDOWCLOSE,0l,0l); #endif MessageInsert(WindowGetFather(Window),Message,Param1,Param2); break; default: key=MAKELO(Param1); key=toupper(key); if(key>='A' && key<='Z') { // quick select FirstLetterItem for(i=0;i<ListGetTotal(WindowList(Window));i++) { int ch; char *str; str=ListGetItem( WindowList(Window),i ), ch=toupper(str[0]); if(ch>=key) break; } if( i>=ListGetTotal(WindowList(Window)) ) i=ListGetTotal(WindowList(Window))-1; //the last Param2=i-ListGetCurrent(WindowList(Window)); goto lbl_downward; } break; } break; case MOUSELEFTDOWN: //key=ListGetCurrent(WindowList(Window)); if (MAKELO(Param1)/CHARHEIGHT!=ListGetCurrent(WindowList(Window)) -ListGetTop(WindowList(Window)) &&MAKELO(Param1)/CHARHEIGHT<ListGetTotal(WindowList(Window)) /*-ListGetHeight(WindowList(Window))*/) { if (ListGetCurrent(WindowList(Window)) >= ListGetTop(WindowList(Window)) && ListGetCurrent(WindowList(Window)) < ListGetTop(WindowList(Window))+ListGetHeight(WindowList(Window))) MessageGo(Window,WMPAINT, MAKELONG(0,(ListGetCurrent(WindowList(Window))- ListGetTop(WindowList(Window)))*CHARHEIGHT), MAKELONG(0,(ListGetCurrent(WindowList(Window))+1- ListGetTop(WindowList(Window)))*CHARHEIGHT)); ListSetCurrent(WindowList(Window),MAKELO(Param1)/CHARHEIGHT +ListGetTop(WindowList(Window))); if (WindowGetProcedure(WindowGetFather(Window))==(Function *)ComboDefaultProcedure) MessageInsert(WindowGetFather(Window),COMBOPULL,Param1,Param2); else { #ifdef USE_SCROLL MidWindow=GetVVScroll(Window); if (MidWindow) { i=WindowGetHeight(Window)-3*SYSSCROLLWIDTH-2; i*=ListGetCurrent(WindowList(Window)); // i/=ListGetTotal(WindowList(Window)); i/=ListGetTotal(WindowList(Window))-1; i=i-WindowGetTop(MidWindow)+SYSSCROLLWIDTH; //*------ if(WindowGetBottom(MidWindow)+i> WindowGetHeight(WindowGetFather(MidWindow))-2-SYSSCROLLWIDTH) i=WindowGetHeight(WindowGetFather(MidWindow))-2 -SYSSCROLLWIDTH-WindowGetBottom(MidWindow); //------*/ MessageGo(MidWindow,WINDOWMOVE,0l,i); } #endif MessageGo(Window,WMPAINT, MAKELONG(0,(ListGetCurrent(WindowList(Window))- ListGetTop(WindowList(Window)))*CHARHEIGHT), MAKELONG(0,(ListGetCurrent(WindowList(Window))+1- ListGetTop(WindowList(Window)))*CHARHEIGHT)); } } //if( key != ListGetCurrent(WindowList(Window)) ) // ByHance, 97,5.11 MessageInsert(Window,ITEMSELECT,ListGetCurrent(WindowList(Window)),Window); break; case VVSCROLLMOVE: /* //i=Param1*ListGetTotal(WindowList(Window)) i=Param1*(ListGetTotal(WindowList(Window))-1) /(WindowGetHeight(Window)-3*SYSSCROLLWIDTH-2) ; if(i<ListGetTop(WindowList(Window)) || i>=ListGetTop(WindowList(Window))+ListGetHeight(WindowList(Window)) ) { i=( ListGetTotal(WindowList(Window)) - 1 ) * Param1; i=0.5+(float)i/(WindowGetHeight(Window)-3*SYSSCROLLWIDTH-2); Length=ListGetTotal(WindowList(Window)) -ListGetHeight(WindowList(Window)); if(i>Length) i=Length; ListSetTop(WindowList(Window),i); MessageInsert(Window,WMPAINT,0l, ListGetHeight(WindowList(Window))*CHARHEIGHT); } */ // modi by zjh for smooth move 96.12.6 { i=( ListGetTotal(WindowList(Window)) - 1 ) * Param1; i=0.5+(float)i/(WindowGetHeight(Window)-3*SYSSCROLLWIDTH-2); Length=ListGetTotal(WindowList(Window))-1; if(i>Length) i=Length; Length=(WindowGetHeight(Window)+0)/16; i=i-Length/2; if (i<0) i=0; if (i+Length>ListGetTotal(WindowList(Window))-1) i=ListGetTotal(WindowList(Window)) - 1-Length+1; if (i<0) i=0; if (i!=ListGetTop(WindowList(Window))) { ListSetTop(WindowList(Window),i); MessageInsert(Window,WMPAINT,0l, ListGetHeight(WindowList(Window))*CHARHEIGHT); } } break; case MOUSELEFTDOUBLE: //MessageInsert(Window,LISTBOXCONFIRM,0L,0L); MessageInsert(Window,KEYDOWN,MAKELONG(0,ENTER),1l); break; case GETFOCUS: // ByHance, 95,11.23 case LOSTFOCUS: WindowDefaultProcedure(Window,Message,Param1,Param2); MidWindow=WindowGetFather(Window); if(MidWindow) // has combo list if( WindowGetHeight(MidWindow)<=SYSBUTTONWIDTH+1) // not pull down break; if(!ListGetTotal(WindowList(Window))) // if no item, break break; MouseHidden(); getviewsettings(&TmpViewPort); SaveColor=getcolor(); WindowGetRealRect(Window,&Left,&Top,&Right,&Bottom); setviewport(Left+1,Top+1,Right-1,Bottom-1,1); DisplayWidth=ListGetItemLength(WindowList(Window))*CHARWIDTH/2; if (DisplayWidth<WindowGetWidth(Window)) DisplayWidth=WindowGetWidth(Window); if (!WindowIsChildless(Window)) DisplayWidth-=SYSSCROLLWIDTH+1+CHARWIDTH/2; //by jerry // DisplayWidth-=SYSSCROLLWIDTH+4; i=ListGetCurrent(WindowList(Window))-ListGetTop(WindowList(Window)); i*=CHARHEIGHT; if(Message==GETFOCUS) { DisplayVirtualRect(3,i+1,2+DisplayWidth-1,i+CHARHEIGHT-1); //if(ListGetTotal(WindowList(Window))==1) if(fGetFocusByKey) // ByHance, 97,5.11 MessageInsert(Window,ITEMSELECT,ListGetCurrent(WindowList(Window)),Window); } else { // LOSTFOCUS DisplayWidth/=CHARWIDTH/2; strncpy(MidString, ListGetItem( WindowList(Window),ListGetCurrent(WindowList(Window)) ), DisplayWidth); Length=strlen(MidString); if (Length<DisplayWidth) memset(MidString+Length,' ',DisplayWidth-Length); MidString[DisplayWidth]=0; ViewportDisplayString(MidString,2,i,LISTBKCOLOR,LISTCOLOR); } setviewport(TmpViewPort.left,TmpViewPort.top,TmpViewPort.right, TmpViewPort.bottom,TmpViewPort.clip); setcolor(SaveColor); MouseShow(); break; case DRAWWINDOW: WindowDefaultProcedure(Window,Message,Param1,Param2); case WMPAINT: getviewsettings(&TmpViewPort); SaveColor=getcolor(); MouseHidden(); WindowGetRealRect(Window,&Left,&Top,&Right,&Bottom); setviewport(Left+1,Top+1,Right-1,Bottom-1,1); setfillstyle(1,EGA_WHITE); if (!WindowIsChildless(Window)) Right-=SYSSCROLLWIDTH+10; // ByHance, 96,3.24 bar(0,0,Right-Left,Bottom-Top); // clear area Param1 = 0; Param2 = Bottom-Top; DisplayWidth=ListGetItemLength(WindowList(Window))*CHARWIDTH/2; if (DisplayWidth<WindowGetWidth(Window)) DisplayWidth=WindowGetWidth(Window); if (!WindowIsChildless(Window)) DisplayWidth-=SYSSCROLLWIDTH+1+CHARWIDTH/2; // by jerry //DisplayWidth-=SYSSCROLLWIDTH+4; DisplayWidth/=CHARWIDTH/2; for (i=MAKELO(Param1);i<MAKELO(Param2);i+=CHARHEIGHT) { if (i/CHARHEIGHT+ListGetTop(WindowList(Window)) >=ListGetTotal(WindowList(Window))) break; strncpy(MidString,ListGetItem(WindowList(Window),i/CHARHEIGHT +ListGetTop(WindowList(Window))),DisplayWidth); Length=strlen(MidString); if (Length<DisplayWidth) memset(MidString+Length,' ',DisplayWidth-Length); MidString[DisplayWidth]=0; if (i/CHARHEIGHT==ListGetCurrent(WindowList(Window)) -ListGetTop(WindowList(Window))) { ViewportDisplayString(MidString,2,i,LISTBKCOLOR,LISTCOLOR); if (Window==ActiveWindow) // ByHance DisplayVirtualRect(3,i+1, 2+DisplayWidth*ASC16WIDTH-1,i+CHARHEIGHT-1); } else ViewportDisplayString(MidString,2,i,LISTCOLOR,LISTBKCOLOR); } setviewport(TmpViewPort.left,TmpViewPort.top,TmpViewPort.right, TmpViewPort.bottom,TmpViewPort.clip); setcolor(SaveColor); MouseShow(); break; case LISTAPPENDITEM: ListInsertItem(Window,ListGetTotal(WindowList(Window)),(char *)LONG2FP(Param1)); break; case LISTINSERTITEM: ListInsertItem(Window,Param2,(char *)LONG2FP(Param1)); break; case LISTINSERTITEMSORTED: { char *p1,*p2; p2 = (char *)LONG2FP(Param1); for (i=0;i<ListGetTotal(WindowList(Window));i++) { p1 = ListGetItem(WindowList(Window),i); if (strcmp(p2,p1)>0) continue; ListInsertItem(Window,i,p2); break; } if (i==ListGetTotal(WindowList(Window))) ListInsertItem(Window,i,p2); } break; case LISTDELETEITEM: if (Param1<ListGetTotal(WindowList(Window))) ListDeleteItem(Window,Param1); break; case LISTDELETELASTITEM: if (ListGetTotal(WindowList(Window))>0) ListDeleteItem(Window,ListGetTotal(WindowList(Window))-1); MessageInsert(Window,WMPAINT,0l, ListGetHeight(WindowList(Window))*CHARHEIGHT); break; case LISTDELETEALL: ListSetTotal(WindowList(Window),0); ListSetTop(WindowList(Window),0); ListSetCurrent(WindowList(Window),0); #ifdef USE_SCROLL if (!WindowIsChildless(Window)) MessageGo(WindowGetChild(Window),WINDOWCLOSE,0l,0l); #endif break; case LISTSETITEMLENGTH: if (Param1>0) ListSetItemLength(WindowList(Window),Param1); break; case LISTSETITEMHEIGHT: if (Param1>0) ListSetHeight(WindowList(Window),(WindowGetHeight(Window)+Param1-2)/Param1); break; case LISTSETTOTALITEM: ListSetTotal(WindowList(Window),Param1); if (!Param1) ListHandleFree(); break; case ITEMSELECT: MessageInsert(WindowGetFather(Window),ITEMSELECT, ListGetCurrent(WindowList(Window)),Window); break; case MOUSEMOVE: //MouseShow(); DialogMouseMove(Window,Message,Param1,Param2); // ByHance, 95,12.6 break; default: return(WindowDefaultProcedure(Window,Message,Param1,Param2)); } return(TRUE); }
static unsigned long DirectoryList(HWND Window,HMSG Message,long Param1,long Param2) { int hlist; switch (Message) { case WINDOWINIT: { //int i,j; char *dirs=NowOpenFile->dirs; char *drive=NowOpenFile->drive; #ifdef _TURBOC_ struct ffblk opffblk; #else struct find_t opffblk; #endif char fn[128]; int r; MessageGo(Window,LISTSETITEMHEIGHT,16,0); MessageGo(Window,LISTSETITEMLENGTH,13,0); /*------ ByHance, 96,3.25 ---- hlist = WindowList(Window); ListSetTotal(hlist,0); ListSetCurrent(hlist,0); ListSetTop(hlist,0); --------------------*/ MessageGo(Window,LISTDELETEALL,0L,0L); // _harderr(handler); if( ! drive[0] ) { // *drive = (char)getdisk()+'A'; *drive = (char)getdisk()+'A'-1; *(drive+1) = ':'; *(drive+2) = 0; } if( !dirs[0] ) { #ifdef __TURBOC__ getcurdir((int)(*drive-'A'+1), dirs); #else unsigned total,old; _dos_getdrive(&old); if(old!=*drive-'A'+1) _dos_setdrive( *drive-'A'+1 , &total ); getcwd(dirs, 64); memmove(dirs,dirs+3,61); // cancel "C:\" if(!dirs[0]) strcpy(dirs,"\\"); if(old!=*drive-'A'+1) _dos_setdrive( old, &total ); #endif } memset(&opffblk, 0, sizeof(opffblk)); strcpy(fn,drive); //if( strcmp(dirs,"\\") && strcmp(dirs,"/") ) //{ // strcat(fn,dirs); // strcat(fn,"\\"); //} if(dirs[0]) { char ch; int len; ch=dirs[0]; if(ch!='\\' && ch!='/') strcat(fn,"\\"); strcat(fn,dirs); len=strlen(fn); ch=fn[len-1]; if(ch!='\\' && ch!='/') strcat(fn,"\\"); } strcat(fn,"*.*"); r = findfirst(fn, &opffblk, FA_DIREC); while (!r) { if((opffblk.ff_attrib & FA_DIREC) && strcmp(opffblk.ff_name,".")) MessageGo(Window, LISTINSERTITEMSORTED, FP2LONG(opffblk.ff_name), 0L); r = findnext(&opffblk); } //MessageGo(Window,WMPAINT,0,ListGetHeight(hlist)*CHARHEIGHT); // ByHance, 95,12.11 MessageInsert(Window,REDRAWMESSAGE,0L, MAKELONG(WindowGetWidth(Window),WindowGetHeight(Window)) ); { /*--- display directory's name ----*/ #define max_n (304/ASC16WIDTH) int x,y,w,h; unsigned total,old; int len; int SaveColor; struct viewporttype TmpViewPort; char disk[20],dirs[64],file[14],ext[5]; strupr(fn); _splitpath(fn,disk,dirs,file,ext); _dos_getdrive(&old); if(old!=disk[0]-'A'+1) _dos_setdrive( disk[0]-'A'+1 , &total ); len=strlen(dirs); if(len>1) { char ch=dirs[len-1]; if(ch=='\\' || ch=='/') dirs[len-1]=0; } chdir(dirs); getcwd(dirs, 64); _dos_setdrive( old, &total ); MouseHidden(); SaveColor=getcolor(); getviewsettings(&TmpViewPort); setviewport(0,0,getmaxx(),getmaxy(),1); WindowGetRealRect(Window,&x,&y,&w,&h); y-=26; len=strlen(dirs); if(len>max_n) { int i; i=len-1; while(dirs[i]!='\\' && dirs[i]!='/' && i>max_n-12) i--; strcpy(dirs,"..."); strcat(dirs,&dirs[i]); } // WaitMessageEmpty(); setfillstyle(1,EGA_LIGHTGRAY); bar(x,y,x+304,y+25); /*--- clear old area --*/ DisplayString(dirs,x,y,EGA_BLACK,EGA_LIGHTGRAY); setviewport(TmpViewPort.left,TmpViewPort.top,TmpViewPort.right, TmpViewPort.bottom,TmpViewPort.clip); setcolor(SaveColor); MouseShow(); #undef max_n } } break; case LISTBOXCONFIRM:{ char dir[20]; char path[40]; hlist = WindowList(Window); strcpy(dir,ListGetItem(hlist,ListGetCurrent(hlist))); strcpy(path,NowOpenFile->drive); strcat(path,dir); chdir(path); #ifdef __TURBOC__ getcurdir(path[0]-'A'+1,NowOpenFile->dirs); #else { unsigned total,old; _dos_getdrive(&old); if(old!=path[0]-'A'+1) _dos_setdrive( path[0]-'A'+1 , &total ); getcwd(NowOpenFile->dirs, 64); memmove(NowOpenFile->dirs,NowOpenFile->dirs+3,61); // cancel "C:\" if(old!=path[0]-'A'+1) _dos_setdrive( old, &total ); } #endif MessageGo(Window,WINDOWINIT,0,0); MessageGo(Window,WMPAINT,0,ListGetHeight(hlist)*CHARHEIGHT); ListSetTop(hlist,0); ListSetCurrent(hlist,0); MessageGo(WindowGetFather(Window),DIRCHANGE,0L,0L); } break; default: return(ListBoxDefaultProcedure(Window,Message,Param1,Param2)); } return(TRUE); }