1. LRESULT CALLBACK WndProc(HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam)
  2. {
  3. HDC hdc;
  4. PAINTSTRUCT ps;
  5. static RECT rect,rect2,rect3;
  6. static cxClient, cyClient;
  7. static HBRUSH hBrush, hOldBrush;
  8. POINT pt;
  9.  
  10. switch (message)
  11. {
  12. case WM_SIZE:
  13. cxClient = LOWORD(lParam);
  14. cyClient = HIWORD(lParam);
  15. break;
  16. case WM_LBUTTONDOWN:
  17. pt.x = LOWORD(lParam);
  18. pt.y = HIWORD(lParam);
  19. if (PtInRect(&rect2,pt))
  20. {
  21. MessageBox(NULL, L"clicked", L"info", NULL);
  22. }
  23.  
  24. break;
  25. case WM_PAINT:
  26. hdc = BeginPaint(hwnd, &ps);
  27. //处理矩形
  28. // rect.left = cxClient / 2 - 50;
  29. // rect.right = cxClient / 2 + 50;
  30. // rect.top = cyClient / 2 - 50;
  31. // rect.bottom = cyClient / 2 + 50;
  32.  
  33. hBrush = CreateSolidBrush(RGB(,,));
  34. //1.fillrect 填充矩形
  35. //FillRect(hdc, &rect, hBrush);
  36. //2.framerect 改画笔为画刷来绘制边框
  37. //FrameRect(hdc, &rect, hBrush);
  38. //3.invertrect 翻转矩形内所有的像素
  39. //InvertRect(hdc, &rect);
  40.  
  41. //4.生成矩形SetRect
  42. SetRect(&rect, cxClient / - , cyClient / - , cxClient/ + , cyClient/ + );
  43. //5.偏移矩形OffsetRect
  44. OffsetRect(&rect, -, -);
  45. FillRect(hdc, &rect, hBrush);
  46. InvertRect(hdc, &rect); //先显示图像,后翻转
  47. //6.增大减小,长宽同时InflateRect
  48. SetRect(&rect, cxClient / - , cyClient / - , cxClient / + , cyClient / + );
  49. InflateRect(&rect, , );
  50. FillRect(hdc, &rect, hBrush);
  51. //7.setrectEmpty 设置矩形为空
  52. FillRect(hdc, &rect, hBrush); //不会显示
  53. //8.copyrect 多用在映射中
  54. CopyRect(&rect2, &rect); //将rect的坐标拷贝给rect2
  55. SetRectEmpty(&rect);//将矩形的各个坐标设为0,则会显示rect2
  56. hBrush = CreateSolidBrush(RGB(, , ));
  57. FillRect(hdc, &rect2, hBrush);
  58. //9.intersectrect 两个矩形交集
  59. //10.unionrect 两个矩形并集
  60. //11.Isrectempty 判断是否为空
  61. //12.ptinrect 判断点是否在矩形中(重要)
  62.  
  63. EndPaint(hwnd, &ps);
  64. break;
  65. case WM_DESTROY:
  66. PostQuitMessage();
  67. return ;
  68. }
  69.  
  70. return DefWindowProc(hwnd, message, wParam, lParam);
  71. }

学习windows编程 day4 之 矩形的操作的更多相关文章

  1. 学习windows编程 day4 之 绘制随机矩形和peekMessage

    #include <windows.h> #include <strsafe.h> LRESULT CALLBACK WndProc(HWND hwnd, UINT messa ...

  2. 学习windows编程 day4 之 多边矩形填充

    #include <windows.h> #include <math.h> LRESULT CALLBACK WndProc(HWND hwnd, UINT message, ...

  3. 学习windows编程 day4 之视口和窗口

    LRESULT CALLBACK WndProc(HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam) { HDC hdc; PAINTSTRU ...

  4. 学习windows编程 day4 之 盯裆猫

    写着写着就困了.... 看这些测量数据就算了,是对各种函数的练习 #include <windows.h> LRESULT CALLBACK WndProc(HWND hwnd, UINT ...

  5. 学习windows编程 day4 之 自定义映射

    LRESULT CALLBACK WndProc(HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam) { HDC hdc; PAINTSTRU ...

  6. 学习windows编程 day4 之 设置画刷

    LRESULT CALLBACK WndProc(HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam) { HDC hdc; PAINTSTRU ...

  7. 学习windows编程 day4 之 映射模式

    LRESULT CALLBACK WndProc(HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam) { HDC hdc; PAINTSTRU ...

  8. 有一定基础的 C++ 学习者该怎样学习 Windows 编程?

    人的心理有个奇异的特性:一项知识一旦学会之后,学习过程中面临的困惑和不解非常快就会忘得干干净净,似乎一切都是自然而然,本来就该这种.因此,关于「怎样入门」这类问题,找顶尖高手来回答,未必能比一个刚入门 ...

  9. 我为什么学习Windows编程

    前一段时间在看TCP/IP,在图书馆里面找了不少的书,其中有几本书还是不错的.比如: <Windows网络与通信程序设计(第二版)> 王艳平著 <WinSock网络编程经络> ...

随机推荐

  1. 微软开源的Trill是什么?

    微软开源的Trill是什么? https://www.cnblogs.com/CattaC/p/10143445.html 微软开源的Trill是什么? 以下是一篇15年的文章的译文:https:// ...

  2. Knowledge-Defined Networking

    知识定义的网络(Knowledge-Defined Networking) 来源:ACM SIGCOMM Computer Communication Review 年份:2017 是什么:容纳和利用 ...

  3. windows下net命令失败

    D:\apache-tomcat-7.0.57\bin>net start mysql57发生系统错误 5. 拒绝访问. 以管理员身份运行 run as administrator 打开cmd. ...

  4. [学习笔记]Ubuntu下安装配置SQLSERVER2017

    摘要自微软官网: https://docs.microsoft.com/zh-cn/sql/linux/quickstart-install-connect-ubuntu 安装步骤: 1. 导入公共秘 ...

  5. JavaScript DOM方法表格添加删除

    <!DOCTYPE HTML> <html> <head> <meta charset="utf-8"> <title> ...

  6. 自定义Label控件

    最近开发过程中有一个需求就是修改label控件的模板,使其能够在鼠标移近的时候变成TextBox,从而方便输入,然后进行相应的修改,最终达到动态修改Label的目的,这里贴出相应的代码,并做简要的分析 ...

  7. jmeter创建高级测试计划

    如果应用程序使用重写地址而不是使用cookie存储信息,需要做一些额外的工作去测试程序 为了正确的响应重写地址,jmeter 需要解析 从服务器获取html 并且检索会话ID, 1 合理利用pre-p ...

  8. ubuntu 安装 postgresql

    安装环境: Ubuntu 10.04-desktop-i386 PostgreSQL 8.4 1. 安装PostgreSQL 输入如下命令 sudo apt-get install postgresq ...

  9. 16mysql1

    一.数据库的基本概念 1.1  常用的关系型数据库                        数据库(Database)是按照数据结构来组织.存储和管理数据的仓库. 1.2  sql语言     ...

  10. BZOJ3110[Zjoi2013]K大数查询——权值线段树套线段树

    题目描述 有N个位置,M个操作.操作有两种,每次操作如果是1 a b c的形式表示在第a个位置到第b个位置,每个位置加入一个数c如果是2 a b c形式,表示询问从第a个位置到第b个位置,第C大的数是 ...