亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? babygrid.cpp

?? babygred
?? CPP
?? 第 1 頁 / 共 5 頁
字號:
//BABYGRID code is copyrighted (C) 20002 by David Hillard
//
//This code must retain this copyright message
//
//Printed BABYGRID message reference and tutorial available.
//email: mudcat@mis.net for more information.



#include "babygrid.h"
#include "resource.h"


#define MAX_GRIDS 20

#define MAX_ROWS 32000
#define MAX_COLS 256




//global variables



HFONT hfontbody,hfontheader,hfonttitle;

HFONT holdfont;

struct _gridhandlestruct 
	{
        UINT gridmenu;
		HWND hlist1;
		char protect[2];
        char title[305];
        char editstring[305];
        char editstringdisplay[305];
		int rows;
		int cols;
		int gridwidth;
		int gridheight;
		int homerow;
		int homecol;
		int rowheight;
		int leftvisiblecol;
		int rightvisiblecol;
		int topvisiblerow;
		int bottomvisiblerow;
		int headerrowheight;
		int cursorrow;
		int cursorcol;
        int ownerdrawitem;
        int visiblecolumns;
        int titleheight;
        int fontascentheight;
		COLORREF cursorcolor;
		COLORREF protectcolor;
		COLORREF unprotectcolor;
		COLORREF textcolor;
		COLORREF highlightcolor;
		COLORREF gridlinecolor;
        COLORREF highlighttextcolor;
		BOOL DRAWHIGHLIGHT;
        BOOL ADVANCEROW;
        BOOL CURRENTCELLPROTECTED;
		BOOL GRIDHASFOCUS;
        BOOL AUTOROW;
        RECT activecellrect;
        HFONT hfont;
        HFONT hcolumnheadingfont;
        HFONT htitlefont;
		BOOL ROWSNUMBERED;
		BOOL COLUMNSNUMBERED;
        BOOL EDITABLE;
        BOOL EDITING;
        BOOL EXTENDLASTCOLUMN;
        BOOL HSCROLL;
        BOOL VSCROLL;
        BOOL SHOWINTEGRALROWS;
        BOOL SIZING;
        BOOL ELLIPSIS;
        BOOL COLAUTOWIDTH;
        BOOL COLUMNSIZING;
        BOOL ALLOWCOLUMNRESIZING;
        int columntoresize;
        int columntoresizeinitsize;
        int columntoresizeinitx;
        int cursortype;
		int columnwidths[MAX_COLS+1];
        BOOL REMEMBERINTEGRALROWS;
        int wannabeheight;
        int wannabewidth;

    } BGHS[MAX_GRIDS];


_BGCELL BGcell,*LPBGcell;

int BG_GridIndex;
int FindResult;
char data[1000];







CREATESTRUCT cs,*lpcs;


int         AddGrid(UINT);
int         FindGrid(UINT);
void		ShowVscroll(HWND,int);
void		ShowHscroll(HWND,int);
int         BinarySearchListBox(HWND,char*);
void        DisplayEditString(HWND ,int ,char*);
int         CountGrids(void);




////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////
int HomeColumnNthVisible(int SI)
    {  
     int j,hc,count;
     count=0;
     hc=BGHS[SI].homecol;
     for(j=1;j<=hc;j++)
         {
          if(BGHS[SI].columnwidths[j]>0)
              {
               count++;
              }
         }
     return count;
    }


void RefreshGrid(HWND hWnd)
	{
	 RECT rect;
     int SI;
	 GetClientRect(hWnd,&rect);
	 InvalidateRect(hWnd,&rect,FALSE);
     SI=FindGrid((UINT)GetMenu(hWnd));
     if(BGHS[SI].EDITING)
         {
          DisplayEditString(hWnd,SI,"");
         }

	}

int GetNextColWithWidth(int SI, int startcol, int direction)
    {
     //calls with direction == 1 for right, direction == -1 for left
     //returns 0 if no more cols in that direction, else column number
     int j;
     int ReturnValue;
     j=startcol;
     if(direction == 1){j++;}
     if(direction != 1){j--;}

     while((BGHS[SI].columnwidths[j] == 0)&&(j<=BGHS[SI].cols)&&(j>0))
         {
         if(direction == 1){j++;}
         if(direction != 1){j--;}
         }
     if((BGHS[SI].columnwidths[j] > 0)&&(j<=BGHS[SI].cols))
         {
          ReturnValue = j;
         }
     else
         {
          ReturnValue = 0;
         }
     return ReturnValue;
    }


int GetRowOfMouse(int SI,int y)
	{
	 int ReturnValue;
	 if(y<=(BGHS[SI].titleheight))
		 {
		  return -1;
		 }
	 if((y>=BGHS[SI].titleheight)&&(y<=BGHS[SI].headerrowheight + BGHS[SI].titleheight))
		 {
		  return 0;
		 }


	 y=y-(BGHS[SI].headerrowheight + BGHS[SI].titleheight);
	 y=y/BGHS[SI].rowheight;
	 ReturnValue = BGHS[SI].homerow + y;
	 if(ReturnValue > BGHS[SI].rows){ReturnValue = -1;}
	 return ReturnValue;
	}


int GetColOfMouse(int SI,int x)
	{
	 int ReturnValue;
	 int j;
	 if(x<=BGHS[SI].columnwidths[0])
		 {
		  return 0;
		 }

	 x-=BGHS[SI].columnwidths[0];

	 j=BGHS[SI].homecol;
	 while(x>0)
		 {
		  x-=BGHS[SI].columnwidths[j];
		  j++;
		 }
	 j--;
	 
	 ReturnValue = j;
     if(BGHS[SI].EXTENDLASTCOLUMN)
         {
	      if(j>BGHS[SI].cols){ReturnValue = BGHS[SI].cols;}
         }
     else
         {
          if(j>BGHS[SI].cols){ReturnValue = -1;}
         }
	 return ReturnValue;
	}

BOOL OutOfRange(_BGCELL *cell)
    {
      if((cell->row > MAX_ROWS)||(cell->col > MAX_COLS))
          {return TRUE;}
      else
          {return FALSE;}
    }

void SetCell(_BGCELL *cell,int row, int col)
	{
	 cell->row = row;
	 cell->col = col;
	}

int DetermineDataType(char* data)
    {
     //return values:
     //       1 = Text or Alpha
     //       2 = Numeric
     //       3 = Boolean TRUE
     //       4 = Boolean FALSE
	 //       5 = Graphic - user drawn (cell text begins with ~)
     int j,k,numberofperiods,numberofpositives,numberofnegatives;
     char tbuffer[1000];
     BOOL DIGIT,ALPHA,PERIOD,WHITESPACE,SYMBOL,POSITIVE,NEGATIVE;
     strcpy(tbuffer,data);
     k=strlen(tbuffer);
     strupr(tbuffer);
     //is it boolean?
     if(!strcmp(tbuffer,"TRUE"))
         {
          return 3; 
         }
     if(!strcmp(tbuffer,"FALSE"))
         {
          return 4;
         }
	 //is it graphic (~)
	 if(tbuffer[0]=='~')
		 {
		  return 5;
		 }
     DIGIT=FALSE;
     ALPHA=FALSE;
     PERIOD=FALSE;
     WHITESPACE=FALSE;
	 SYMBOL=FALSE;
	 POSITIVE=FALSE;
	 NEGATIVE=FALSE;

     numberofperiods=0;
	 numberofpositives=0;
	 numberofnegatives=0;
     for(j=0;j<k;j++)
         {
         if(isalpha(tbuffer[j])){ALPHA=TRUE;}
         if(isdigit(tbuffer[j])){DIGIT=TRUE;}
         if(iswspace(tbuffer[j])){WHITESPACE=TRUE;}
         if(tbuffer[j]=='.'){PERIOD=TRUE;numberofperiods++;}
		 if(tbuffer[j]=='+'){if(j>0){ALPHA=TRUE;}}
		 if(tbuffer[j]=='-'){if(j>0){ALPHA=TRUE;}}
         }
     if((ALPHA)||(WHITESPACE))
         {
          return 1;
         }
     if((DIGIT)&&(!ALPHA)&&(!WHITESPACE))
         {
          if(numberofperiods>1)
              {
               return 1;
              }
          else
              {
               return 2;
              }
         }
     return 1;
    }


void CalcVisibleCellBoundaries(int SelfIndex)
{
 int gridx,gridy;
 int j;
 gridx=BGHS[SelfIndex].gridwidth;
 gridy=BGHS[SelfIndex].gridheight;



 j=	BGHS[SelfIndex].homecol;
 BGHS[SelfIndex].leftvisiblecol = BGHS[SelfIndex].homecol;
 BGHS[SelfIndex].topvisiblerow = BGHS[SelfIndex].homerow;
 //calc columns visible
 //first subtract the width of col 0;
 gridx = gridx - BGHS[SelfIndex].columnwidths[0];
 do
 {
  gridx = gridx - BGHS[SelfIndex].columnwidths[j];
  j++;
 }while ((gridx >= 0)&&(j<BGHS[SelfIndex].cols));

 if(j>BGHS[SelfIndex].cols){j=BGHS[SelfIndex].cols;}
 BGHS[SelfIndex].rightvisiblecol = j;




 //calc rows visible;
 gridy = gridy - BGHS[SelfIndex].headerrowheight;
 j=	BGHS[SelfIndex].homerow;
 do
 {
  gridy = gridy - BGHS[SelfIndex].rowheight;
  j++;
 }while ((gridy > 0)&&(j<BGHS[SelfIndex].rows));

 if(j>BGHS[SelfIndex].rows){j=BGHS[SelfIndex].rows;}
 BGHS[SelfIndex].bottomvisiblerow = j;
}


RECT GetCellRect(HWND hWnd,int SI, int r, int c)
	{
	 RECT rect;
	 int offset;
	 int j;
	 //c and r must be greater than zero

	 //get column offset
	   //first get col 0 width
	   offset=BGHS[SI].columnwidths[0];
	   for(j=BGHS[SI].homecol;j<c;j++)
		   {
			offset += BGHS[SI].columnwidths[j];
		   }
	   rect.left = offset;
	   rect.right = offset + BGHS[SI].columnwidths[c];

    if(BGHS[SI].EXTENDLASTCOLUMN)
        {
	        //see if this is the last column
	        if(!GetNextColWithWidth(SI,c,1))
		        {
		         //extend this column
		         RECT trect;
		         int temp;
		         GetClientRect(hWnd,&trect);
		         temp = (offset +(trect.right - rect.left))-rect.left;
		         if(temp > BGHS[SI].columnwidths[c])
			         {
		              rect.right = offset + (trect.right - rect.left);
			         }
		        }
        }

	   //now get the top and bottom of the rect
	   offset = BGHS[SI].headerrowheight+BGHS[SI].titleheight;
	   for(j=BGHS[SI].homerow;j<r;j++)
		   {
			offset += BGHS[SI].rowheight;
		   }
	   rect.top = offset;
	   rect.bottom = offset + BGHS[SI].rowheight;
	   return rect;
	}


void DisplayTitle(HWND hWnd,int SI,HFONT hfont)
    {
     RECT rect;
     HDC gdc;
     HFONT holdfont;

     GetClientRect(hWnd,&rect);
     


     gdc=GetDC(hWnd);
     SetBkMode(gdc,TRANSPARENT);
     holdfont=(HFONT)SelectObject(gdc,hfont);
     rect.bottom = BGHS[SI].titleheight;
	 DrawEdge(gdc,&rect,EDGE_ETCHED,BF_MIDDLE|BF_RECT|BF_ADJUST);
	 DrawTextEx(gdc,BGHS[SI].title,-1,&rect,DT_END_ELLIPSIS|DT_CENTER|DT_WORDBREAK|DT_NOPREFIX,NULL);
     SelectObject(gdc,holdfont);
     ReleaseDC(hWnd,gdc);
    }


void DisplayColumn(HWND hWnd,int SI,int c,int offset,HFONT hfont,HFONT hcolumnheadingfont)
{
	HDC gdc;
	RECT rect,rectsave;
    HFONT holdfont;
	int r;
	char buffer[1000];
	int iDataType,iProtection;
	if(BGHS[SI].columnwidths[c]==0){return;}

	 gdc=GetDC(hWnd);
	 SetBkMode(gdc,TRANSPARENT);
     ShowHscroll(hWnd,SI);
	 ShowVscroll(hWnd,SI);
     

    holdfont = (HFONT)SelectObject(gdc,hcolumnheadingfont);
	SetTextColor(gdc,BGHS[SI].textcolor);
	//display header row
	r=0;



	rect.left = offset + 0;
	rect.top = BGHS[SI].titleheight;//0
	rect.right = BGHS[SI].columnwidths[c] + offset;
	rect.bottom = BGHS[SI].headerrowheight + BGHS[SI].titleheight;

    if(BGHS[SI].EXTENDLASTCOLUMN)
        {
	        //see if this is the last column
	        if(!GetNextColWithWidth(SI,c,1))
		        {

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
男男成人高潮片免费网站| 色8久久精品久久久久久蜜| 欧美午夜宅男影院| 亚洲一区在线观看网站| 欧美日韩一本到| 日本免费新一区视频| 91精品福利在线一区二区三区| 全国精品久久少妇| 久久久91精品国产一区二区精品| 成人激情免费电影网址| 亚洲精品国产精品乱码不99| 欧美欧美午夜aⅴ在线观看| 麻豆91在线看| 中文字幕在线一区免费| 欧美午夜精品一区二区三区| 青娱乐精品视频在线| 久久久影视传媒| 99久久精品国产导航| 亚洲成a人在线观看| 欧美成人性战久久| 99久久久无码国产精品| 午夜欧美电影在线观看| 久久色.com| 在线观看欧美精品| 久久精品国产亚洲一区二区三区 | 久久国产婷婷国产香蕉| 国产精品网友自拍| 欧美日韩三级一区二区| 国产精品88av| 亚洲成av人片一区二区| 久久精品人人做| 精品视频在线免费看| 国产一区二区主播在线| 亚洲制服丝袜av| 久久精品一区八戒影视| 欧美日韩在线亚洲一区蜜芽| 国产suv一区二区三区88区| 午夜精品在线看| 亚洲视频在线观看一区| 日韩午夜在线影院| 在线观看日韩国产| 成人免费毛片高清视频| 青青草国产精品97视觉盛宴| 最新日韩av在线| 久久久三级国产网站| 欧美人妇做爰xxxⅹ性高电影| 国产不卡免费视频| 捆绑调教一区二区三区| 亚洲线精品一区二区三区| 国产精品美女久久久久久久久久久| 7777精品伊人久久久大香线蕉经典版下载 | 国产精品一区二区在线观看网站| 亚洲一区在线视频| 国产精品妹子av| 久久久久国产免费免费 | 国产精品一区专区| 久久黄色级2电影| 婷婷开心久久网| 亚洲一区二区三区爽爽爽爽爽| 国产精品日韩成人| 国产精品视频看| 国产女主播视频一区二区| 日韩精品一区二区三区视频| 欧美日本一道本| 欧美人xxxx| 91精选在线观看| 91精品国产91综合久久蜜臀| 欧美日韩一区不卡| 在线观看免费一区| av亚洲精华国产精华精华| 久久精品国产秦先生| 亚洲欧美激情在线| 中文字幕日本不卡| 国产亚洲欧美色| 欧美videos大乳护士334| 欧美三级电影精品| 91久久精品一区二区三区| 国模套图日韩精品一区二区| 日韩电影在线观看电影| 中文字幕一区二区三区视频 | 蜜桃一区二区三区四区| 午夜精品爽啪视频| 亚洲一区二区视频| 中文字幕一区二区三区乱码在线| 国产日韩欧美不卡在线| 久久亚洲免费视频| 欧美v国产在线一区二区三区| 91精品黄色片免费大全| 欧美日韩一级视频| 欧美电影一区二区三区| 欧美三级电影精品| 欧美乱熟臀69xxxxxx| 在线看日韩精品电影| 欧美专区日韩专区| 欧美在线视频你懂得| 色欧美88888久久久久久影院| 色诱亚洲精品久久久久久| 色乱码一区二区三区88| 欧洲国产伦久久久久久久| 欧美一区二区三区免费观看视频| 91精品国产综合久久香蕉的特点| 欧美日韩国产高清一区| 91精品国产综合久久精品app| 在线播放中文一区| 欧美一区二区三区思思人| 日韩亚洲欧美高清| 在线不卡的av| 欧美精品一区二区三区高清aⅴ| 2020日本不卡一区二区视频| 国产欧美日韩亚州综合| 国产精品天美传媒| 亚洲一区在线免费观看| 天堂蜜桃91精品| 国产成人久久精品77777最新版本 国产成人鲁色资源国产91色综 | 午夜av一区二区| 狠狠色狠狠色合久久伊人| 国产精品66部| 91久久线看在观草草青青| 欧美日韩国产一级| 国产婷婷色一区二区三区在线| 亚洲欧洲无码一区二区三区| 亚洲成人黄色小说| 国产一区亚洲一区| 一本一本久久a久久精品综合麻豆 一本一道波多野结衣一区二区 | 欧美色偷偷大香| 日韩欧美国产精品| 国产精品免费人成网站| 国产精品久久久久天堂| 久久99久久久久久久久久久| 成人在线综合网| 欧美精品在线一区二区三区| 久久久久久久久99精品| 亚洲精品久久7777| 国产综合色视频| 91免费国产在线| 久久精品网站免费观看| 一区二区三区不卡视频| 精品影视av免费| 色婷婷狠狠综合| 精品美女在线播放| 亚洲一区二区三区自拍| 一区二区三区精密机械公司| 国产精品一二三四区| 欧美精品777| 亚洲欧美一区二区在线观看| 蜜桃av噜噜一区| 日本乱码高清不卡字幕| 日韩欧美一区在线| 天天综合色天天综合| 成人91在线观看| 精品成人免费观看| 亚洲一二三四区不卡| 国产成人综合网| 欧美一区二区精品| 日韩理论片一区二区| 精品影视av免费| 欧美高清hd18日本| 悠悠色在线精品| 成人精品一区二区三区中文字幕| 欧美精品一卡二卡| 国产精品麻豆99久久久久久| 国产激情91久久精品导航| 日韩欧美成人一区| 偷窥少妇高潮呻吟av久久免费| 久久九九国产精品| 蜜桃视频一区二区三区在线观看| 91精品1区2区| 久久精品视频一区| 国产在线观看免费一区| 欧美精品在线观看一区二区| 国产精品久久久久久久久果冻传媒 | 99久久精品国产观看| 久久毛片高清国产| 韩国在线一区二区| 欧美一区二区福利在线| 亚洲大片免费看| 欧洲精品中文字幕| 一区二区三区在线播| 懂色av中文字幕一区二区三区 | 91久久精品国产91性色tv| 国产精品久久福利| 成人精品视频一区二区三区尤物| 精品国产91久久久久久久妲己| 中文字幕日韩一区二区| 欧美在线视频不卡| 亚洲一区二区三区四区中文字幕| 欧美在线不卡一区| 亚洲国产精品一区二区www| 91视频在线看| 国产精品第五页| 欧美二区在线观看| 久久电影网电视剧免费观看| 欧美电影一区二区| 久久精品999| 国产色一区二区| 欧美少妇一区二区| 日韩电影免费在线| 久久嫩草精品久久久久| 国产精品99久久久久久似苏梦涵| 日韩欧美成人一区|