如题 。请大侠指教。
解决方案 »
- 怎么样在xp系统下和wince系统下的,抓取屏幕上的文字信息,包括应用程序的对话框、菜单、文字内容、IE浏览器中的文字??
- help!!
- 我想做一个MD5反查的,遇到点问题
- 调用动态库时内存的释放问题,请教各位大虾!
- CEvent ev;后会出错,WHY???
- 我的系统在没选xp样式下做出的程序,重画了非客户区,而系统选了xp样式后我的程序的非客户区显示不正常,这是为什么?急,调试成功马上揭贴!
- 新手:winmain函数到底怎么加到程序中去的呢?
- CDialog中能创建状态条吗?
- 高手快来帮我打印! 分数没什么,讨论问题是关键。
- 如何让CRichEditView在关闭时,不提问是否保存文档?在线等待
- 线程间访问消息队列
- 使用CreateDesktop最多能创建多少个虚拟桌面
CPen::Cpen(...)内部也是调用 CreatePen, exCreatePen 的
CreatePen()是动态创建画笔的时候调用的
{
CPainterDoc* pDoc = GetDocument();
ASSERT_VALID(pDoc);
// TODO: add draw code for native data here
CRect rect;
GetClientRect(rect);
CPen *OldPen;
POSITION pos=pDoc->RecordList.GetHeadPosition();
while(pos!=NULL)
{
BYTE * drawtype;
drawtype=(BYTE *)pDoc->RecordList.GetNext(pos);
switch(*drawtype)
{
case LINE:
LINENODE *line;
line=(LINENODE *)pDoc->RecordList.GetNext(pos);
if(line->bDo>0)
{
if(line->bDo!=2)
CPen pen(line->pen.iStyle,line->pen.iWidth,line->pen.Color);
else
CPen pen(PS_DASHDOT,1,RGB(255,0,0));
OldPen=pDC->SelectObject(&pen);
pDC->MoveTo(line->Start);
pDC->LineTo(line->End);
pDC->SelectObject(OldPen);
}
break;
}
}
}
void CPainterView::OnDraw(CDC* pDC)
{
CPainterDoc* pDoc = GetDocument();
ASSERT_VALID(pDoc);
// TODO: add draw code for native data here
CRect rect;
GetClientRect(rect);
HPEN hOldPen,hPen;
POSITION pos=pDoc->RecordList.GetHeadPosition();
while(pos!=NULL)
{
BYTE * drawtype;
drawtype=(BYTE *)pDoc->RecordList.GetNext(pos);
switch(*drawtype)
{
case LINE:
LINENODE *line;
line=(LINENODE *)pDoc->RecordList.GetNext(pos);
if(line->bDo>0)
{
if(line->bDo!=2)
hPen=CreatePen(line->pen.iStyle,line->pen.iWidth,line->pen.Color);
else
hPen=CreatePen(PS_DASHDOT,1,RGB(255,0,0));
hOldPen=(HPEN)SelectObject(pDC->m_hDC,hPen);
pDC->MoveTo(line->Start);
pDC->LineTo(line->End);
SelectObject(pDC->m_hDC,hOldPen);
}
break;
}
}
}那请问这两个区别在哪 为什么前面那个编译通不过。
CPen pen(line->pen.iStyle,line->pen.iWidth,line->pen.Color);
else
CPen pen(PS_DASHDOT,1,RGB(255,0,0));
OldPen=pDC->SelectObject(&pen);
相当于if(line->bDo!=2)
{
CPen pen(line->pen.iStyle,line->pen.iWidth,line->pen.Color);
// 该变量只在大括号内有效
}
else
{
CPen pen(PS_DASHDOT,1,RGB(255,0,0));
// 该变量只在大括号内有效
}OldPen=pDC->SelectObject(&pen); // 到这里, pen 的定义已失效
CPen pen;
if(line->bDo!=2)
{
pen.CreatePen(line->pen.iStyle,line->pen.iWidth,line->pen.Color);
// 该变量只在大括号内有效
}
else
{
pen.CreatePen(PS_DASHDOT,1,RGB(255,0,0));
// 该变量只在大括号内有效
}
=========
能不能通用不是绝对的,从功能上看,当然是通过的,但是你在一个API参数中总不能放一个CPen变量吧!
这个是完美的解答。 marrco2005 小弟在此谢过啦。 同时也谢谢其他各位大侠。