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

📄 progressbar.c

📁 MinGUI 可视化程序代码
💻 C
字号:
 /******************************************************************************** Copyright  2006 National ASIC Center, All right Reserved** FILE NAME:      ProgressBar.c* PROGRAMMER:     ming.c* Date of Creation:   2006/08/8** DESCRIPTION:** NOTE:** FUNCTIONS LIST:* -----------------------------------------------------------------------------** -----------------------------------------------------------------------------* * MODIFICATION HISTORY*     LastModify  2008/06/05******************************************************************************/#include "mingui.h"
//---------------------------------------------------------------------------
typedef struct t_ProgressBar
{ int Max,Pos;
}TProgressBar;
//---------------------------------------------------------------------------
void ProgressBar_SetMax(HWND hWnd,int maxValue)
{ TProgressBar *pb = (TProgressBar *)WndClsBuf(hWnd);
  if(pb->Max!=maxValue)
  { pb->Max=maxValue;
    if(pb->Pos>maxValue) pb->Pos=maxValue;
    Invalidate(hWnd);
  }
}
//---------------------------------------------------------------------------
void ProgressBar_SetPos(HWND hWnd,int position)
{ TProgressBar *pb = (TProgressBar *)WndClsBuf(hWnd);
  if(position>pb->Max)position=pb->Max;
  if(position!=pb->Pos)
  { pb->Pos=position;
    Invalidate(hWnd);
  }
}
//---------------------------------------------------------------------------void ProgressBar_Repaint(HWND hWnd){  HDC dc=BeginPaint(hWnd);
   TProgressBar *pb = (TProgressBar *)WndClsBuf(hWnd);
   int w,scale;
   int clientWidth=crWidth(hWnd),clientHeight=crHeight(hWnd);
  
   if(pb->Pos>0 && pb->Max>0)
   { w=clientWidth*pb->Pos/pb->Max;
     scale=100*pb->Pos/pb->Max;
   }
   else
   { w=scale=0;
   }
  
   if(w>0) FillRect(dc,0,0,w,clientHeight);
  
   if(clientHeight>=SYS_FONT_HEIGHT)
   { int len;
	 char strbuf[8];
     if(scale<10)
	 { strbuf[0]='0'+scale;
	   len=1;
	 }
	 else if(scale<100)
	 { strbuf[0]='0' + scale/10;
	   strbuf[1]='0' + scale%10;
       len=2;
	 }
	 else
	 { strbuf[0]='1';
	   strbuf[1]='0';
	   strbuf[2]='0';
       len=3;
	 }
     strbuf[len]='%';
	 strbuf[len+1]='\0';
     
	 SetPenLogic(dc,PL_XOR);
	 SetColor(dc,CL_SOLID);
	 DrawText(dc,0,0,clientWidth,clientHeight,strbuf,alCenter|alMiddle);
  }    EndPaint(hWnd);}//---------------------------------------------------------------------------static HRESULT CALLBACK DefProgressBarProc(HWND hWnd,UINT message,WPARAM wParam,LPARAM lParam){ switch(message)  { case WM_PAINT:		   ProgressBar_Repaint(hWnd);         return 0;
    case WM_CREATE:
		 { TProgressBar *pb = (TProgressBar *)WndClsBuf(hWnd);
		   pb->Pos=0;
		   pb->Max=100;
		 }
		 return 0;  } return DefWindowProc(hWnd,message,wParam,lParam);}//---------------------------------------------------------------------------void CM_RegisterProgressBar(void){  TWNDCLASS wc;   memset(&wc,0,sizeof(wc));   wc.clForeground=CL_BLUE;   wc.clBackground=CL_BTNFACE;      wc.lpfnWndProc=DefProgressBarProc;   wc.lpszClassName="ProgressBar";
   wc.cbWndExtra=sizeof(TProgressBar);   RegisterClass(&wc);}/*---------------------------------------------------------------------------END --- Thank you!                                                  ming.c---------------------------------------------------------------------------*/

⌨️ 快捷键说明

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