一个桌面取色器--基于C SDK

新加了功能:

按下空格建会把当前鼠标位置的颜色值写入到剪贴版中,格式是#XXXXXX

完全是为网页美工定做的一个小工具。个人觉得还是比较好用。而且还是个绿色软件。

但是觉得代码写的不好,总觉得还是有问题,收到VK_SPACE消息以后的操作好像有冗余。暂时就着样了。以后看看还有没有什么功能想添加的又加进去。

 

还是基于SDK的:

代码公布如下:

 

 

#include 
   
   

#define ID_TIMER 1


LRESULT CALLBACK WndProc(HWND,UINT,WPARAM,LPARAM);


int WINAPI WinMain(HINSTANCE hInstance,HINSTANCE hPrevInstance,PSTR szCmdLine,int iCmdShow)
{
 static TCHAR szAppName[]=TEXT("GetColor ");
 HWND hwnd;
 MSG msg;
 WNDCLASS wndclass;

 wndclass.style=CS_HREDRAW|CS_VREDRAW;
 wndclass.cbClsExtra=0;
 wndclass.cbWndExtra=0;
 wndclass.hInstance=hInstance;
 wndclass.hIcon=LoadIcon(NULL,IDI_APPLICATION);
 wndclass.hCursor=LoadIcon(NULL,IDC_ARROW);
 wndclass.hbrBackground=(HBRUSH)GetStockObject(WHITE_BRUSH);
 wndclass.lpfnWndProc=WndProc;
 wndclass.lpszMenuName=NULL;
 wndclass.lpszClassName=szAppName;


 if(!RegisterClass(&wndclass))
 {
  MessageBox(NULL,TEXT("The Program require windows NT"),szAppName,MB_ICONERROR);
  return 0;
 }

 MessageBox(NULL,TEXT("程序由BearOcean编写,用于捕捉鼠标位置的RGB值和色彩"),TEXT("Infomation"),MB_OK);


 hwnd=CreateWindow(szAppName,TEXT("GetColor--Writen By BearSea"),
                WS_OVERLAPPED|WS_CAPTION|WS_SYSMENU|WS_BORDER,
       CW_USEDEFAULT,CW_USEDEFAULT,
       300,100,
       NULL,NULL,hInstance,NULL);


 ShowWindow(hwnd,iCmdShow);
 UpdateWindow(hwnd);


 while(GetMessage(&msg,NULL,0,0))
 {
  TranslateMessage(&msg);
  DispatchMessage(&msg);
 }
 return msg.wParam;
}



LRESULT CALLBACK WndProc(HWND hwnd,UINT message,WPARAM wParam,LPARAM lParam)
{
 static HDC hdcScreen;
 PAINTSTRUCT ps;
 POINT pt;
 RECT rc;
 static COLORREF cr=RGB(0,0,0),LastCr=RGB(1,0,0);//用于存放颜色信息
    HDC hdc;
 TCHAR szBuffer1[17];
 TCHAR szBuffer2[17];
 TCHAR szBuffer[10];
 RECT ColorRect={150,0,300,100};
 HBRUSH hBrush;
 int iLength1;
 int iLength2;

 HGLOBAL hGlobal;
    PTSTR pGlobal ;


 switch(message)
 {
     case WM_CREATE:
   GetClientRect(hwnd,&rc);
   hdcScreen=CreateDC(TEXT("DISPLAY"),NULL,NULL,NULL);//获取屏幕句柄
   SetTimer(hwnd,ID_TIMER,100,NULL);
   InvalidateRect(hwnd,NULL,TRUE);
   return 0;

  case WM_TIMER:
   
   GetCursorPos(&pt);//Get Cursor pos
            cr=GetPixel(hdcScreen,pt.x,pt.y);
   
   if(cr!=LastCr)
   {
        InvalidateRect(hwnd,NULL,TRUE);
     LastCr=cr;
   }
  
   return 0;

  case WM_PAINT:
   
   hdc=BeginPaint(hwnd,&ps);
   GetClientRect(hwnd,&rc);
   hBrush=CreateSolidBrush(cr);
   FillRect(hdc,&ColorRect,hBrush);
   iLength1=wsprintf(szBuffer1,TEXT("16:#%02x%02x%02x"),GetRValue(cr),GetGValue(cr),GetBValue(cr));
   iLength2=wsprintf(szBuffer2,TEXT("rgb: %4d%4d%4d"),GetRValue(cr),GetGValue(cr),GetBValue(cr));
   TextOut(hdc,5,10,szBuffer1,iLength1);
   TextOut(hdc,5,30,szBuffer2,iLength2);
   
  


   EndPaint(hwnd,&ps);
   DeleteObject(hBrush);
   return 0;

        case WM_KEYDOWN:
   switch(wParam)
   {
   case VK_SPACE:
   GetCursorPos(&pt);//Get Cursor pos
            cr=GetPixel(hdcScreen,pt.x,pt.y);
   wsprintf(szBuffer,TEXT("#%02x%02x%02x"),GetRValue(cr),GetGValue(cr),GetBValue(cr));
   //------------------------------------
   hGlobal = GlobalAlloc (GHND | GMEM_SHARE, (lstrlen (szBuffer) + 1) * sizeof (TCHAR)) ;
   pGlobal = GlobalLock (hGlobal) ;
   lstrcpy (pGlobal, szBuffer) ;
   GlobalUnlock (hGlobal) ;
   OpenClipboard (hwnd) ;
            EmptyClipboard () ;
            SetClipboardData (CF_TEXT, hGlobal) ;
            CloseClipboard () ;
   MessageBox (NULL, TEXT ("颜色信息已经写入剪贴板 :)"), TEXT ("Action"), 0);
   //------------------------------------
   //MessageBox (NULL, TEXT ("颜色信息已存入剪贴板"), TEXT ("HelloMsg"), 0);
   break;


   case VK_F1:
   MessageBox(NULL, TEXT ("使用方法:/n鼠标指向要选取的颜色/n按下空格键,颜色值将被写入剪贴板./n-------------------------------------------------/n写这个是为了方便自己写网页的时候/n获取颜色值。/n-------------------------------------------------/n                     By BearOcean"), TEXT ("Help"), 0);
   break;
   }
   return 0;


            
  
  

  case WM_DESTROY:
   DeleteDC(hdcScreen);
   KillTimer(hwnd,ID_TIMER);
   PostQuitMessage(0);


   return 0;
           
 }
 return DefWindowProc(hwnd,message,wParam,lParam);
}

 

 

-----------------------------------

1.按下空格获取颜色,存入剪贴板。

2.按F1有帮助和提示。

-----------------------------------

下载:GetColor 1.0

下载:GetColor Beta

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值