vc++中绘图~不建立一个MFC应用程序是么但调用CDC类的moveto,lineto函数来画图~

和这个问题有些相似~~http://zhidao.baidu.com/question/190919851.html?fr=qrl&cid=866&index=4&fr2... 和这个问题有些相似~~http://zhidao.baidu.com/question/190919851.html?fr=qrl&cid=866&index=4&fr2=query
但我太菜~没有弄得很明白~希望高手给我解释一下~最好是有具体一点例子~急求啊~谢谢啊~
展开
 我来答
sl65agm
2011-07-08 · TA获得超过1383个赞
知道小有建树答主
回答量:734
采纳率:0%
帮助的人:591万
展开全部
1. 不知用MFC库与头文件,是无法调用CDC的。
2. 如果你建立的不是MFC程序,那么俺假设你建了win32程序或者win32控制台程序。
1. 你的代码中添加相应的头文件
2. 工程中选择使用MFC库
3. 假设你的程序中创建了窗口,那么,可以通过窗口句柄hWnd构造CDC。
例如:Attach(::GetDC(hWnd)); CDC::FromHandle,
构造方法很多,这取决于你当时在处理什么windows消息。有时windows消息中会带HDC,可以直接用HDC句柄构造CDC,如果消息中不带HDC,你就需要用WIn32函数获取HDC.不同的消息中对HDC的回收也是不一样的,有的消息里你回收(Relese)了会出问题。
4. 一旦完成CDC的构造,当然是成功构造之后,你就能调用画线函数了。

CDC类,本质上是封装了HDC和使用HDC的一系列GDI函数,因此有了HDC你就能构造MFC中任何一个DC类。
追问
有几个问题~
1. 你的代码中添加相应的头文件
请问是什么头文件啊~
2. 假设你的程序中创建了窗口,那么,可以通过窗口句柄hWnd构造CDC
建造的不是MFC程序~怎麽创建窗口啊~

那个~我是初学MFC~还没什么概念~能详细一点麽~
追答
case WM_PAINT:
{
RECT re;
::GetClientRect(hWnd, &re);
hdc = BeginPaint(hWnd, &ps);
CDC cdc;
cdc.Attach(hdc);
cdc.FillRect((CRect *)&re, &CBrush(RGB(111, 12, 160)));
cdc.Detach();
EndPaint(hWnd, &ps);
}
break;
case WM_DESTROY:
PostQuitMessage(0);
break;
case WM_LBUTTONDOWN:
{
isMouseDown = true;
isFirstDraw = true;
start.x = LOWORD(lParam);
start.y = HIWORD(lParam);
}
break;
case WM_LBUTTONUP:
{
isMouseDown = false;
}
break;
case WM_MOUSEMOVE:
{
static CPen pen(PS_SOLID, 3, RGB(56, 200, 77));
if(!isMouseDown) {
return DefWindowProc(hWnd, message, wParam, lParam);
}
if( (rand() % 100) < 32 ) //for performace
return DefWindowProc(hWnd, message, wParam, lParam);

HDC dc = ::GetDC(hWnd);
CDC cdc;
cdc.Attach(dc);
cdc.SelectObject(pen);
::SetROP2(cdc, R2_NOTXORPEN);

POINT temp = { current.x, current.y }; ////for performace , first update, then erase
current.x = LOWORD(lParam);
current.y = HIWORD(lParam);

cdc.MoveTo(start.x, start.y);
cdc.LineTo(current.x, current.y);

if(!isFirstDraw) {
cdc.MoveTo(start.x, start.y);
cdc.LineTo(temp.x, temp.y);
} else {
isFirstDraw = false;
}

cdc.Detach();
::ReleaseDC(hWnd, dc);
}
break;

这个例子说明了如何在win32中使用MFC,,,
当然,,也可在win32中直接继承 mfc中的类。
小七会乖的
2011-07-08 · 超过36用户采纳过TA的回答
知道答主
回答量:127
采纳率:0%
帮助的人:96.8万
展开全部
貌似那个就是说在资源文件里创建对话框
然后利用对话框的OnPaint()函数来画图
更多追问追答
追问
怎麽在资源文件中创建对话框啊~
追答
话说先在应用程序的资源文件中定义对话框
然后可以通过调用DialogBox函数在窗口中显示对话框
再构造对话框消息处理函数
最后关闭对话框
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式