新加了功能:
按下空格建会把当前鼠标位置的颜色值写入到剪贴版中,格式是#XXXXXX
完全是为网页美工定做的一个小工具。个人觉得还是比较好用。而且还是个绿色软件。
但是觉得代码写的不好,总觉得还是有问题,收到VK_SPACE消息以后的操作好像有冗余。暂时就着样了。以后看看还有没有什么功能想添加的又加进去。
还是基于SDK的:
代码公布如下:
#include <windows.h>
![](http://211.83.110.77/Images/OutliningIndicators/None.gif)
#define ID_TIMER 1
![](http://211.83.110.77/Images/OutliningIndicators/None.gif)
![](http://211.83.110.77/Images/OutliningIndicators/None.gif)
LRESULT CALLBACK WndProc(HWND,UINT,WPARAM,LPARAM);
![](http://211.83.110.77/Images/OutliningIndicators/None.gif)
![](http://211.83.110.77/Images/OutliningIndicators/None.gif)
int WINAPI WinMain(HINSTANCE hInstance,HINSTANCE hPrevInstance,PSTR szCmdLine,int iCmdShow)
![](http://211.83.110.77/Images/OutliningIndicators/ExpandedBlockStart.gif)
![](http://211.83.110.77/Images/OutliningIndicators/ContractedBlock.gif)
{
static TCHAR szAppName[]=TEXT("GetColor ");
HWND hwnd;
MSG msg;
WNDCLASS wndclass;
![](http://211.83.110.77/Images/OutliningIndicators/InBlock.gif)
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;
![](http://211.83.110.77/Images/OutliningIndicators/InBlock.gif)
![](http://211.83.110.77/Images/OutliningIndicators/InBlock.gif)
if(!RegisterClass(&wndclass))
![](http://211.83.110.77/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
{
MessageBox(NULL,TEXT("The Program require windows NT"),szAppName,MB_ICONERROR);
return 0;
}
![](http://211.83.110.77/Images/OutliningIndicators/InBlock.gif)
MessageBox(NULL,TEXT("程序由BearOcean编写,用于捕捉鼠标位置的RGB值和色彩"),TEXT("Infomation"),MB_OK);
![](http://211.83.110.77/Images/OutliningIndicators/InBlock.gif)
![](http://211.83.110.77/Images/OutliningIndicators/InBlock.gif)
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);
![](http://211.83.110.77/Images/OutliningIndicators/InBlock.gif)
![](http://211.83.110.77/Images/OutliningIndicators/InBlock.gif)
ShowWindow(hwnd,iCmdShow);
UpdateWindow(hwnd);
![](http://211.83.110.77/Images/OutliningIndicators/InBlock.gif)
![](http://211.83.110.77/Images/OutliningIndicators/InBlock.gif)
while(GetMessage(&msg,NULL,0,0))
![](http://211.83.110.77/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
{
TranslateMessage(&msg);
DispatchMessage(&msg);
}
return msg.wParam;
}
![](http://211.83.110.77/Images/OutliningIndicators/None.gif)
![](http://211.83.110.77/Images/OutliningIndicators/None.gif)
![](http://211.83.110.77/Images/OutliningIndicators/None.gif)
LRESULT CALLBACK WndProc(HWND hwnd,UINT message,WPARAM wParam,LPARAM lParam)
![](http://211.83.110.77/Images/OutliningIndicators/ExpandedBlockStart.gif)
![](http://211.83.110.77/Images/OutliningIndicators/ContractedBlock.gif)
{
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];
![](http://211.83.110.77/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
RECT ColorRect=
{150,0,300,100};
HBRUSH hBrush;
int iLength1;
int iLength2;
![](http://211.83.110.77/Images/OutliningIndicators/InBlock.gif)
HGLOBAL hGlobal;
PTSTR pGlobal ;
![](http://211.83.110.77/Images/OutliningIndicators/InBlock.gif)
![](http://211.83.110.77/Images/OutliningIndicators/InBlock.gif)
switch(message)
![](http://211.83.110.77/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
{
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;
![](http://211.83.110.77/Images/OutliningIndicators/InBlock.gif)
case WM_TIMER:
GetCursorPos(&pt);//Get Cursor pos
cr=GetPixel(hdcScreen,pt.x,pt.y);
if(cr!=LastCr)
![](http://211.83.110.77/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
{
InvalidateRect(hwnd,NULL,TRUE);
LastCr=cr;
}
return 0;
![](http://211.83.110.77/Images/OutliningIndicators/InBlock.gif)
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);
![](http://211.83.110.77/Images/OutliningIndicators/InBlock.gif)
![](http://211.83.110.77/Images/OutliningIndicators/InBlock.gif)
EndPaint(hwnd,&ps);
DeleteObject(hBrush);
return 0;
![](http://211.83.110.77/Images/OutliningIndicators/InBlock.gif)
case WM_KEYDOWN:
switch(wParam)
![](http://211.83.110.77/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
{
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;
![](http://211.83.110.77/Images/OutliningIndicators/InBlock.gif)
![](http://211.83.110.77/Images/OutliningIndicators/InBlock.gif)
case VK_F1:
MessageBox(NULL, TEXT ("使用方法:\n鼠标指向要选取的颜色\n按下空格键,颜色值将被写入剪贴板.\n-------------------------------------------------\n写这个是为了方便自己写网页的时候\n获取颜色值。\n-------------------------------------------------\n By BearOcean"), TEXT ("Help"), 0);
break;
}
return 0;
![](http://211.83.110.77/Images/OutliningIndicators/InBlock.gif)
![](http://211.83.110.77/Images/OutliningIndicators/InBlock.gif)
![](http://211.83.110.77/Images/OutliningIndicators/InBlock.gif)
case WM_DESTROY:
DeleteDC(hdcScreen);
KillTimer(hwnd,ID_TIMER);
PostQuitMessage(0);
![](http://211.83.110.77/Images/OutliningIndicators/InBlock.gif)
![](http://211.83.110.77/Images/OutliningIndicators/InBlock.gif)
return 0;
}
return DefWindowProc(hwnd,message,wParam,lParam);
}
![](http://211.83.110.77/Images/OutliningIndicators/None.gif)
![](http://211.83.110.77/Images/OutliningIndicators/None.gif)
-----------------------------------
1.按下空格获取颜色,存入剪贴板。
2.按F1有帮助和提示。
-----------------------------------
下载:GetColor 1.0
下载:GetColor Beta