学习windows编程 day4 之 矩形的操作
LRESULT CALLBACK WndProc(HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam)
{
HDC hdc;
PAINTSTRUCT ps;
static RECT rect,rect2,rect3;
static cxClient, cyClient;
static HBRUSH hBrush, hOldBrush;
POINT pt; switch (message)
{
case WM_SIZE:
cxClient = LOWORD(lParam);
cyClient = HIWORD(lParam);
break;
case WM_LBUTTONDOWN:
pt.x = LOWORD(lParam);
pt.y = HIWORD(lParam);
if (PtInRect(&rect2,pt))
{
MessageBox(NULL, L"clicked", L"info", NULL);
} break;
case WM_PAINT:
hdc = BeginPaint(hwnd, &ps);
//处理矩形
// rect.left = cxClient / 2 - 50;
// rect.right = cxClient / 2 + 50;
// rect.top = cyClient / 2 - 50;
// rect.bottom = cyClient / 2 + 50; hBrush = CreateSolidBrush(RGB(,,));
//1.fillrect 填充矩形
//FillRect(hdc, &rect, hBrush);
//2.framerect 改画笔为画刷来绘制边框
//FrameRect(hdc, &rect, hBrush);
//3.invertrect 翻转矩形内所有的像素
//InvertRect(hdc, &rect); //4.生成矩形SetRect
SetRect(&rect, cxClient / - , cyClient / - , cxClient/ + , cyClient/ + );
//5.偏移矩形OffsetRect
OffsetRect(&rect, -, -);
FillRect(hdc, &rect, hBrush);
InvertRect(hdc, &rect); //先显示图像,后翻转
//6.增大减小,长宽同时InflateRect
SetRect(&rect, cxClient / - , cyClient / - , cxClient / + , cyClient / + );
InflateRect(&rect, , );
FillRect(hdc, &rect, hBrush);
//7.setrectEmpty 设置矩形为空
FillRect(hdc, &rect, hBrush); //不会显示
//8.copyrect 多用在映射中
CopyRect(&rect2, &rect); //将rect的坐标拷贝给rect2
SetRectEmpty(&rect);//将矩形的各个坐标设为0,则会显示rect2
hBrush = CreateSolidBrush(RGB(, , ));
FillRect(hdc, &rect2, hBrush);
//9.intersectrect 两个矩形交集
//10.unionrect 两个矩形并集
//11.Isrectempty 判断是否为空
//12.ptinrect 判断点是否在矩形中(重要) EndPaint(hwnd, &ps);
break;
case WM_DESTROY:
PostQuitMessage();
return ;
} return DefWindowProc(hwnd, message, wParam, lParam);
}
学习windows编程 day4 之 矩形的操作的更多相关文章
- 学习windows编程 day4 之 绘制随机矩形和peekMessage
#include <windows.h> #include <strsafe.h> LRESULT CALLBACK WndProc(HWND hwnd, UINT messa ...
- 学习windows编程 day4 之 多边矩形填充
#include <windows.h> #include <math.h> LRESULT CALLBACK WndProc(HWND hwnd, UINT message, ...
- 学习windows编程 day4 之视口和窗口
LRESULT CALLBACK WndProc(HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam) { HDC hdc; PAINTSTRU ...
- 学习windows编程 day4 之 盯裆猫
写着写着就困了.... 看这些测量数据就算了,是对各种函数的练习 #include <windows.h> LRESULT CALLBACK WndProc(HWND hwnd, UINT ...
- 学习windows编程 day4 之 自定义映射
LRESULT CALLBACK WndProc(HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam) { HDC hdc; PAINTSTRU ...
- 学习windows编程 day4 之 设置画刷
LRESULT CALLBACK WndProc(HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam) { HDC hdc; PAINTSTRU ...
- 学习windows编程 day4 之 映射模式
LRESULT CALLBACK WndProc(HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam) { HDC hdc; PAINTSTRU ...
- 有一定基础的 C++ 学习者该怎样学习 Windows 编程?
人的心理有个奇异的特性:一项知识一旦学会之后,学习过程中面临的困惑和不解非常快就会忘得干干净净,似乎一切都是自然而然,本来就该这种.因此,关于「怎样入门」这类问题,找顶尖高手来回答,未必能比一个刚入门 ...
- 我为什么学习Windows编程
前一段时间在看TCP/IP,在图书馆里面找了不少的书,其中有几本书还是不错的.比如: <Windows网络与通信程序设计(第二版)> 王艳平著 <WinSock网络编程经络> ...
随机推荐
- Spring MVC静态资源处理(转)
原文地址: http://www.cnblogs.com/fangqi/archive/2012/10/28/2743108.html 优雅REST风格的资源URL不希望带 .html 或 .do 等 ...
- Spring使用Cache、整合Ehcache(转)
今天在做Spring使用Cache.整合Ehcache时发现一篇非常好的文章,原文地址 http://elim.iteye.com/blog/2123030 从3.1开始,Spring引入了对Cach ...
- Which path should be used jdk or jre for JAVA_HOME environment variable?
https://stackoverflow.com/questions/17601827/which-one-should-java-home-to-point-jdk-or-jre 临时变更JAVA ...
- mysql 备份数据库 mysqldump
@echo off for /F "usebackq tokens=1,2 delims==" %%i in (`wmic os get LocalDateTime /VALUE ...
- centos安装图形化界面
用下面命令查看查看是哪个模式 systemctl get-default 开机启动图形界面 systemctl set-default graphical.target(图形界面模式) reboot( ...
- 日志那点事儿——slf4j源码剖析
前言: 说到日志,大多人都没空去研究,顶多知道用logger.info或者warn打打消息.那么commons-logging,slf4j,logback,log4j,logging又是什么关系呢?其 ...
- jquery 加載
load(url,data,callback)從遠程服務器加載數據,并放入到被選中元素上: url是必須有的,希望加載的url: data是可選的,表示和請求一起發送的鍵值對數據: callback是 ...
- ef 仓储模式 Redis
接着写一下 上一章提到的 BaseRepositoryRedis.cs 先说说题外话:由于公司希望用到缓存来提高访问速度.那么我理所当然的想到redis. 这个无可厚非.可是当时我们的项目已经开发的差 ...
- MYSQL数据插入和更新的语法
tag:原文章地址 经常会遇到一行数据在特定条件下如果存在就更新列,不存在就插入新的行,用replace和duplicate语法都可以实现,但是也是有区别的.如果是数据覆盖就用replace,如果只是 ...
- [luogu3505][bzoj2088][POI2010]TEL-Teleportation【分层图】
题目大意 给出了一个图,然后让你加最多的边,让点\(1\)到\(2\)之间至少要经过5条边 解法 比较清楚,我们可以将这个图看作一个分层图,点\(1\)为第一层,再将\(2\)作为第五层,这样第一层和 ...