一个桌面取色器--基于C SDK
来源:互联网 发布:网络音乐提供商潘多拉 编辑:程序博客网 时间:2024/05/29 03:19
新加了功能:
按下空格建会把当前鼠标位置的颜色值写入到剪贴版中,格式是#XXXXXX
完全是为网页美工定做的一个小工具。个人觉得还是比较好用。而且还是个绿色软件。
但是觉得代码写的不好,总觉得还是有问题,收到VK_SPACE消息以后的操作好像有冗余。暂时就着样了。以后看看还有没有什么功能想添加的又加进去。
还是基于SDK的:
代码公布如下:
#include#define ID_TIMER 1LRESULT 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
- 一个桌面取色器--基于C SDK
- 基于七牛Python SDK写的一个同步脚本
- 如何创建一个最简单的Windows桌面应用程序 (C++)
- C++ sdk 创建桌面快捷方式
- FFMPEG SDK 开发介绍 & 用C/C++开发基于VLC SDK的视频播放器
- 一个基于百度地图的桌面软件(附工程源码)
- c++Sdk
- 一个桌面软件
- 开发一个android桌面
- 基于 LIBVLC sdk 开发
- 基于XML的桌面应用
- 基于XML的桌面应用
- 基于EasyUI实现windows桌面
- 虚拟桌面:一个简单的桌面管理工具
- 虚拟桌面:一个简单的桌面管理工具
- 在ideal中以equinox-SDK-Neon框架输出一个基于osgi的helloworld例子
- 一个还算简单的微信消息SDK(基于.Net Standard 2.0)
- linux下 X11桌面 一个C语言调用Xlib创建窗口的小列子
- MDT 2008 中分区功能的加强
- 修改Putty 0.6 代码支持SSH 密码保存功能
- Dojo的协议
- IBM DB2 数据库使用小技巧
- 什么是WSDL?(转)
- 一个桌面取色器--基于C SDK
- XULRunner——Web桌面开发的创新者
- DB2跨数据库访问表的方法
- .Net 事件
- 为Socket写的附加方法
- 内网聊天工具FreeChat Beta
- 局域网聊天工具FreeChat 1.0 开发日志
- FreeChat 2.0 ...大改 模型和架构
- 内网聊天工具FreeChat 2.0