LRESULT CALLBACK WndProc(HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam)
{
HDC hdc;
PAINTSTRUCT ps;
RECT rect;
static HBRUSH hBrush, hOldBrush;
switch (message)
{
case WM_PAINT:
hdc = BeginPaint(hwnd, &ps);
GetClientRect(hwnd, &rect);
//系统画刷数共有11个
//画刷是使用8X8像素的位图进行填充的,而不是像素点。效率高
//获取系统画刷(不要用deleteObject删除)
//hBrush=GetStockObject(LTGRAY_BRUSH);//浅灰色
//hBrush = GetStockObject(NULL_BRUSH);//不设置画刷,则是不进行填充 //设置自定义画刷createSolidBrush,createHatchBrush,createBrushIndirect
//hBrush=CreateSolidBrush(RGB(255,255,0));
//hBrush = CreateHatchBrush(HS_BDIAGONAL, RGB(0, 255, 0));//数字是样式 查手册
LOGBRUSH bh[];
for (int i = ; i < ; i++)
{
bh[i].lbStyle = BS_HATCHED;
bh[i].lbHatch = i;
bh[i].lbColor = RGB(i * 4, , );
} //最后一个是系统画刷,不需要删除
bh[].lbStyle = BS_SOLID;
bh[].lbColor = RGB(, , ); //用于记录所需要删除的画刷
HBRUSH TotBrush[]; //绘制6个矩形,填充不同
for (int i = ; i < ;i++)
{
hBrush=CreateBrushIndirect(&bh[i]);
if (i < )
TotBrush[i] = hBrush;
SelectObject(hdc, hBrush);
Rectangle(hdc, + * i, , + * i, );
} for (int i = ; i < ;i++)
{
DeleteObject(TotBrush[i]);
} //替换画刷
// hOldBrush = SelectObject(hdc, hBrush);
//中间写字
// SetTextAlign(hdc,TA_CENTER);
// TextOut(hdc, rect.right / 2, rect.bottom / 2, L"this a test", 11);
// SetTextAlign(hdc, TA_LEFT);
// Ellipse(hdc, rect.right / 4, rect.bottom / 4 , rect.right * 3 / 4, rect.bottom * 3 / 4); SelectObject(hdc, hOldBrush);
EndPaint(hwnd, &ps);
break;
case WM_DESTROY:
//DeleteObject(hBrush);//必须是自定义画刷
PostQuitMessage();
return ;
} return DefWindowProc(hwnd, message, wParam, lParam);
}

学习windows编程 day4 之 设置画刷的更多相关文章

  1. 学习windows编程 day4 之 矩形的操作

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

  2. 学习windows编程 day3 之 设置当前的背景颜色

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

随机推荐

  1. 第三个spring冲刺第10天

    进入最后阶段冲刺最后一天了,基本的需求已经完成了,最后的布局问题也解决了,我们的软件正式推出了.

  2. JAVA面对对象(五)——接口

    接口由全局常量和公共的抽象方法组成,接口的定义格式: interface 接口名称{ 全局常量; 抽象方法; } 接口中的抽象方法必须定义为public访问权限,在接口中如果不写也默认是public访 ...

  3. PAT (Basic Level) Practice 1001 害死人不偿命的(3n+1)猜想

    https://pintia.cn/problem-sets/994805260223102976/problems/994805325918486528 卡拉兹(Callatz)猜想: 对任何一个自 ...

  4. 防止xss攻击。

    function htmlEscape(text){ return text.replace(/[<>&\"=]/g,function(match,pos,origina ...

  5. 【工具技巧】:sublime notepad++ 多行编辑

    1. 多行编辑 sublime 最简单的多行编辑实现方法 1. 鼠标选中文件 然后按 ctrl+D 自动选中相同的进行同时编辑 2.选中shift按键+鼠标右键进行选择,可以同时选中多行进行编辑. n ...

  6. Node params和query的Get请求传参

    //1:加载http express框架//2:创建服务器const http = require("http");const express = require("ex ...

  7. jquery 選擇器

    jquery 選擇器有: 元素選擇器: $("p")選擇所有<p> $("p.intro")選擇所有class=“intro”的<p> ...

  8. jQuery 簡介

    jQuery:是一個js庫,可以極大地簡化編程,“寫得少做得多”. jquery的作用: 挑選元素.操作屬性.事件函數.動畫和效果.ajax: jQuery庫:google和microsoft都支持, ...

  9. Harmonic Number LightOJ - 1234 (分段打表)

    题意: 求调和级数,但n很大啦.. 解析: 分段打表  每间隔50存储一个数,在计算时  只需要找到离输入的n最近的那个数 以它为起点 开始计算即可 emm...补充一下调和级数的运算公式   r为常 ...

  10. 【刷题】BZOJ 1132 [POI2008]Tro

    Description 平面上有N个点. 求出所有以这N个点为顶点的三角形的面积和 N<=3000 Input 第一行给出数字N,N在[3,3000] 下面N行给出N个点的坐标,其值在[0,10 ...