文墨网
 
     
 


  


代码 >> 代码粗放 >> 制作取色器的方法    热   

制作取色器的方法
作者:文墨网    来源:本站原创    点击数:2078

在VC6.0中新建 工程 选择Win32 application,一直下一步确定。
然后再新建C++ Source file
内容:
#include <windows.h>

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

int WINAPI WinMain(HINSTANCE hInstance,
       HINSTANCE hPrevInstance,
       LPSTR lpCmdLine,
       int nShowCmd)
{
 static TCHAR szAppName[]=RGB;

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

 if(! RegisterClass(&cwnd))
 {
  MessageBox(NULL,Fail to Register the Window class!,szAppName,MB_IC&#111nERROR);
  return 0;
 }

 HWND hwnd;

 hwnd=CreateWindow(szAppName,szAppName,
  WS_OVERLAPPED | WS_MINIMIZEBOX | WS_EX_TOPMOST | WS_SYSMENU,
  CW_USEDEFAULT,CW_USEDEFAULT,CW_USEDEFAULT,CW_USEDEFAULT,
  NULL,NULL,hInstance,NULL);

 ShowWindow(hwnd,nShowCmd);
 UpdateWindow(hwnd);

 MSG msg;

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

LRESULT CALLBACK WndProc(HWND hwnd,UINT msg,WPARAM wParam,LPARAM lParam)
{
 HDC hdc;
 static RECT rect,color_rect,point_rect,rgb_rect,d_rect;
 const int height=100,width=300;
 
 static POINT mspt;
 static HWND handle;
 static COLORREF color;
 static bool flag;
 static HBRUSH hBrush;

 char szbuf[100];

 switch(msg)
 {
 case WM_CREATE:
  SetTimer(hwnd,0,100,NULL);
  MoveWindow(hwnd,(GetSystemMetrics(SM_CXSCREEN)-width)/2,(GetSystemMetrics(SM_CYSCREEN)-height)/2,width,height,true);
  return 0;
 case WM_SIZE:
  GetClientRect(hwnd,&rect);
  color_rect.left=rect.left+2,color_rect.top=rect.top=2,color_rect.bottom=rect.bottom-2,color_rect.right=color_rect.left+100;
  point_rect.left=110,point_rect.top=rect.top,point_rect.right=rect.right,point_rect.bottom=rect.bottom/2;
  rgb_rect.left=110,rgb_rect.top=point_rect.bottom,rgb_rect.right=rect.right,rgb_rect.bottom=rect.bottom;
  return 0;
 case WM_TIMER:
  hdc=GetDC(hwnd);
  GetCursorPos(&mspt);
  handle=WindowFromPoint(mspt);
  GetWindowRect(handle,&d_rect);
  color=GetPixel(GetWindowDC(handle),mspt.x-d_rect.left,mspt.y-d_rect.top);
  DrawText(hdc,szbuf,wsprintf(szbuf,X:%04d Y:%04d  ,mspt.x,mspt.y),&point_rect,DT_SINGLELINE | DT_RIGHT | DT_VCENTER);
  DrawText(hdc,szbuf,wsprintf(szbuf,R:%03d G:%03d B:%03d  ,GetR&#118alue(color),GetG&#118alue(color),GetB&#118alue(color)),&rgb_rect,DT_SINGLELINE | DT_RIGHT | DT_VCENTER);
  hBrush=CreateSolidBrush(color);
  SelectObject(hdc,hBrush);
  Rectangle(hdc,color_rect.left,color_rect.top,color_rect.right,color_rect.bottom);
  DeleteObject(hBrush);
  ReleaseDC(hwnd,hdc);
  return 0;
 case WM_DESTROY:
  KillTimer(hwnd,0);
  PostQuitMessage(0);
  return 0;
 }
 return DefWindowProc(hwnd,msg,wParam,lParam);
}


  • 看了这篇,我也想发表一篇

  • 翻阅本站全部篇目 >> 翻阅本栏其它篇目:
  • >> 代码 >> 代码粗放 >> 制作取色器的方法

    评论(已关闭)】【打印此文】【关闭窗口

     最新5篇热力推荐文章
  • 刘宝军《自白》[3201]

  • 刘宝军《六月的质感----2012年学...[5282]

  • 《词综》(卷三)五代十国词七十...[18082]

  • 秋水霞衣《点绛唇·初临文墨网》...[4357]

  • 刘宝军《倴城,太阳落山了,灯光...[4525]

  •  相关文章
  • 记几个网址[1759]

  • 怎样清除系统中的木马病毒[1987]

  • 记录:以表列TD作为长竖线的各种颜色和宽度[2273]

  • 回答问题:整理了一小时的资料不让发!怎么办?[2166]

  • 百度搜索的几个命令与技巧[9760]

  • 网友评论:(只显示最新10条。评论内容只代表网友观点,与本站立场无关!)【回复网友(已关闭)
        没有任何评论
    文墨网底部
     
     


     
    版权所有:文墨网 冀ICP备17009013号-2 ©2002-2026  

    电话:13603371339 地址:河北唐山滦南倴城

    联系站长| 上传空间
    文墨网 | 网站制作文墨网(QQ7722629)| 程序友谊网络科技