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

📄 button.c

📁 MinGUI 可视化程序代码
💻 C
字号:
 /******************************************************************************** Copyright  2006 National ASIC Center, All right Reserved** FILE NAME:      Button.c* PROGRAMMER:     ming.c* Date of Creation:   2006/08/8** DESCRIPTION:** NOTE:** FUNCTIONS LIST:* -----------------------------------------------------------------------------** -----------------------------------------------------------------------------* * MODIFICATION HISTORY*     LastModify  2006/10/30******************************************************************************/#include "mingui.h"
//---------------------------------------------------------------------------void Button_Repaint(HWND hWnd){ char *BtnCaption;
  HDC dc=BeginPaint(hWnd);
  int clientWidth=crWidth(hWnd),clientHeight=crHeight(hWnd);
    /*画位图*/  if(WNDPTR(hWnd)->Logo)  { int x,y;    if( WNDPTR(hWnd)->Logo->Width < clientWidth )    { x  =  ( (clientWidth - WNDPTR(hWnd)->Logo->Width)>>1 );    } else x=0;                 if( WNDPTR(hWnd)->Logo->Height < clientHeight )    { y =  ( (clientHeight - WNDPTR(hWnd)->Logo->Height)>>1 );    } else y=0;    DrawBitmap(dc,x,y,WNDPTR(hWnd)->Logo);  }  /*画标题*/
  BtnCaption=GetWindowText(hWnd);  if(BtnCaption && *BtnCaption)  {	SetPenLogic(dc,PL_REPLACE);    if(WndGetAttr(hWnd,WS_DISABLED))    { SetColor(dc,CL_WHITE);      DrawText(dc,1,1,clientWidth,clientHeight,BtnCaption,alCenter|alMiddle);      SetColor(dc,CL_DARKGRAY);      DrawText(dc,0,0,clientWidth,clientHeight,BtnCaption,alCenter|alMiddle);    }    else    { DrawText(dc,0,0,clientWidth,clientHeight,BtnCaption,alCenter|alMiddle);    }  }  if(WndGetAttr(hWnd,WS_FOCUS))  { /*画焦点状态按钮内虚线框*/    if(!WNDPTR(hWnd)->Logo  &&  !WndGetAttr(hWnd,BS_MENU))    { SetPenLogic(dc,PL_XOR);      SetColor(dc,CL_SOLID);      DrawDashedRect(dc,3,3,clientWidth-6,clientHeight-6);    }    /*画焦点状态按钮反白显示*/   if(WndGetAttr(hWnd,BS_MENU))    { SetPenLogic(dc,PL_XOR);      SetColor(dc,CL_SOLID);      FillRect(dc,0,0,clientWidth,clientHeight);    }  }
  EndPaint(hWnd);}//---------------------------------------------------------------------------static HRESULT CALLBACK DefButtonProc(HWND hWnd,UINT message,WPARAM wParam,LPARAM lParam){ switch(message)  { case WM_LBUTTONDOWN:			WndAddAttr(hWnd,BS_PUSHED);			InvalidateNCArea(hWnd);
			CMD_NotifyParent(hWnd,BN_PUSHED);         break;/*DefWindowProc will deal with focus change events*/
    case WM_LBUTTONUP:			WndSubAttr(hWnd,BS_PUSHED);			InvalidateNCArea(hWnd);
			CMD_NotifyParent(hWnd,BN_UNPUSHED);         break;/*DefWindowProc will dispatch BN_CLICKED events*/

    case WM_KEYUP:
		   if(wParam==VK_RETURN && WndGetAttr(hWnd,WS_FOCUS)) 
		   { CMD_NotifyParent(hWnd,BN_CLICKED);
		   }
		 return 0;

	case WM_PAINT:
  	       Button_Repaint(hWnd);
         return 0;
    case WM_KILLFOCUS:    case WM_SETFOCUS:            InvalidateWindow(hWnd,true);         return 0;
    case WM_ENABLE:            Invalidate(hWnd);         return 0;
    case WM_SETTEXT:         if(SaveWindowText(hWnd,(char *)lParam))         { Invalidate(hWnd);
		 }         return 0;
    case WM_SETLOGO:            WNDPTR(hWnd)->Logo=(TBitmap *)lParam;            Invalidate(hWnd);         return 0;
    case WM_NCCALCSIZE:	     if(WndGetAttr(hWnd,WS_BORDER) && lParam)		 { InflateRect((TRECT *)lParam, -2, -2);
		 }		 return 0;
    case WM_NCPAINT:          if(WndGetAttr(hWnd,WS_BORDER))		  { HDC dc=GetDC(hWnd);			DrawFrame(dc,0,0,absWidth(hWnd),absHeight(hWnd),WndGetAttr(hWnd,WS_FOCUS),WndGetAttr(hWnd,BS_PUSHED));
		    ReleaseDC(dc);		  }		 return 0;  } return DefWindowProc(hWnd,message,wParam,lParam);}//---------------------------------------------------------------------------void CM_RegisterButton(void){  TWNDCLASS wc;   memset(&wc,0,sizeof(wc));   wc.clForeground=CL_BTNTEXT;   wc.clBackground=CL_BTNFACE;   wc.lpfnWndProc=DefButtonProc;   wc.lpszClassName="button";   RegisterClass(&wc);}/*---------------------------------------------------------------------------END --- Thank you!                                                  ming.c---------------------------------------------------------------------------*/

⌨️ 快捷键说明

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