创建几何画笔时出现“需要的资源无法得到”警告对话框。
原因: 创建几何画笔时候总是出现“需要的资源无法得到”的警告信息,发现原因是,设置了PS_USERSTYLE, 并且没有设置CPen( intnPenStyle, intnWidth, const LOGBRUSH*pLogBrush, intnStyleCount = 0, const DWORD*lpStyle = NULL );
的后两个参数。 或者, 没有设置PS_USERSTYLE, 而设置了上述函数的后两个参数。
创建方形画笔的一个示例:
- DWORD penFlags=PS_GEOMETRIC | PS_ENDCAP_SQUARE | PS_JOIN_BEVEL;
- LOGBRUSH lb;
- lb.lbStyle=BS_SOLID;
- lb.lbColor=RGB(100, 200, 200);
- lb.lbHatch=HS_VERTICAL;
- CPen tmpPen(penFlags, 20, &lb);
DWORD penFlags=PS_GEOMETRIC | PS_ENDCAP_SQUARE | PS_JOIN_BEVEL; LOGBRUSH lb; lb.lbStyle=BS_SOLID; lb.lbColor=RGB(100, 200, 200); lb.lbHatch=HS_VERTICAL; CPen tmpPen(penFlags, 20, &lb);
方形画笔与圆形画笔的不同:
- // 设置逻辑画刷
- LOGBRUSH logBrush;
- logBrush.lbStyle = BS_SOLID;
- logBrush.lbColor = RGB(10, 20, 100);
- logBrush.lbHatch = HS_CROSS;
- int x1 = 100, y = 100, x2 = 400;
- int i = 0;
- // 使用方形画笔绘制各种样式的直线
- for (i = 0; i < 5; ++i)
- {
- CPen pen(i | PS_GEOMETRIC | PS_ENDCAP_SQUARE | PS_JOIN_BEVEL, 20, &logBrush);
- pDC->SelectObject(&pen);
- pDC->MoveTo(x1, y + i * 40);
- pDC->LineTo(x2, y + i * 40);
- pen.DeleteObject();
- }
- x1 = 500, x2 = 800;
- // 使用圆形画笔创建各种样式的直线
- for (i = 0; i < 5; ++i)
- {
- CPen pen(i | PS_GEOMETRIC | PS_ENDCAP_ROUND | PS_JOIN_BEVEL, 20, &logBrush);
- pDC->SelectObject(&pen);
- pDC->MoveTo(x1, y + i * 40);
- pDC->LineTo(x2, y + i * 40);
- pen.DeleteObject();
- }
// 设置逻辑画刷 LOGBRUSH logBrush; logBrush.lbStyle = BS_SOLID; logBrush.lbColor = RGB(10, 20, 100); logBrush.lbHatch = HS_CROSS; int x1 = 100, y = 100, x2 = 400; int i = 0; // 使用方形画笔绘制各种样式的直线 for (i = 0; i < 5; ++i) { CPen pen(i | PS_GEOMETRIC | PS_ENDCAP_SQUARE | PS_JOIN_BEVEL, 20, &logBrush); pDC->SelectObject(&pen); pDC->MoveTo(x1, y + i * 40); pDC->LineTo(x2, y + i * 40); pen.DeleteObject(); } x1 = 500, x2 = 800; // 使用圆形画笔创建各种样式的直线 for (i = 0; i < 5; ++i) { CPen pen(i | PS_GEOMETRIC | PS_ENDCAP_ROUND | PS_JOIN_BEVEL, 20, &logBrush); pDC->SelectObject(&pen); pDC->MoveTo(x1, y + i * 40); pDC->LineTo(x2, y + i * 40); pen.DeleteObject(); }
运行结果:
创建几何画笔时出现“需要的资源无法得到”警告对话框。
原因: 创建几何画笔时候总是出现“需要的资源无法得到”的警告信息,发现原因是,设置了PS_USERSTYLE, 并且没有设置CPen( intnPenStyle, intnWidth, const LOGBRUSH*pLogBrush, intnStyleCount = 0, const DWORD*lpStyle = NULL );
的后两个参数。 或者, 没有设置PS_USERSTYLE, 而设置了上述函数的后两个参数。
创建方形画笔的一个示例:
- DWORD penFlags=PS_GEOMETRIC | PS_ENDCAP_SQUARE | PS_JOIN_BEVEL;
- LOGBRUSH lb;
- lb.lbStyle=BS_SOLID;
- lb.lbColor=RGB(100, 200, 200);
- lb.lbHatch=HS_VERTICAL;
- CPen tmpPen(penFlags, 20, &lb);
DWORD penFlags=PS_GEOMETRIC | PS_ENDCAP_SQUARE | PS_JOIN_BEVEL; LOGBRUSH lb; lb.lbStyle=BS_SOLID; lb.lbColor=RGB(100, 200, 200); lb.lbHatch=HS_VERTICAL; CPen tmpPen(penFlags, 20, &lb);
方形画笔与圆形画笔的不同:
- // 设置逻辑画刷
- LOGBRUSH logBrush;
- logBrush.lbStyle = BS_SOLID;
- logBrush.lbColor = RGB(10, 20, 100);
- logBrush.lbHatch = HS_CROSS;
- int x1 = 100, y = 100, x2 = 400;
- int i = 0;
- // 使用方形画笔绘制各种样式的直线
- for (i = 0; i < 5; ++i)
- {
- CPen pen(i | PS_GEOMETRIC | PS_ENDCAP_SQUARE | PS_JOIN_BEVEL, 20, &logBrush);
- pDC->SelectObject(&pen);
- pDC->MoveTo(x1, y + i * 40);
- pDC->LineTo(x2, y + i * 40);
- pen.DeleteObject();
- }
- x1 = 500, x2 = 800;
- // 使用圆形画笔创建各种样式的直线
- for (i = 0; i < 5; ++i)
- {
- CPen pen(i | PS_GEOMETRIC | PS_ENDCAP_ROUND | PS_JOIN_BEVEL, 20, &logBrush);
- pDC->SelectObject(&pen);
- pDC->MoveTo(x1, y + i * 40);
- pDC->LineTo(x2, y + i * 40);
- pen.DeleteObject();
- }
// 设置逻辑画刷 LOGBRUSH logBrush; logBrush.lbStyle = BS_SOLID; logBrush.lbColor = RGB(10, 20, 100); logBrush.lbHatch = HS_CROSS; int x1 = 100, y = 100, x2 = 400; int i = 0; // 使用方形画笔绘制各种样式的直线 for (i = 0; i < 5; ++i) { CPen pen(i | PS_GEOMETRIC | PS_ENDCAP_SQUARE | PS_JOIN_BEVEL, 20, &logBrush); pDC->SelectObject(&pen); pDC->MoveTo(x1, y + i * 40); pDC->LineTo(x2, y + i * 40); pen.DeleteObject(); } x1 = 500, x2 = 800; // 使用圆形画笔创建各种样式的直线 for (i = 0; i < 5; ++i) { CPen pen(i | PS_GEOMETRIC | PS_ENDCAP_ROUND | PS_JOIN_BEVEL, 20, &logBrush); pDC->SelectObject(&pen); pDC->MoveTo(x1, y + i * 40); pDC->LineTo(x2, y + i * 40); pen.DeleteObject(); }
运行结果: