int CMFCView::OnCreate(LPCREATESTRUCT lpCreateStruct)
{
if (CView::OnCreate(lpCreateStruct) == -1)
return -1; // TODO: 在此添加您专用的创建代码
/* CClientDC dc(this);
TEXTMETRIC tm;
dc.GetTextMetrics(&tm);
CreateSolidCaret(tm.tmAveCharWidth/8,tm.tmHeight);
ShowCaret();*/
SetTimer(1,100,NULL);
return 0;
}
定义了一个SDI,我想问大家SetTimer(1,100,NULL);这个函数需要放在什么位置吗?
void CMFCView::OnDraw(CDC* /*pDC*/)
{
CMFCDoc* pDoc = GetDocument();
ASSERT_VALID(pDoc);
if (!pDoc)
return;
/* CString str("hello world!");
CDC *pDC=GetDC();
pDC->TextOut(50,50,str);
CSize sz=pDC->GetTextExtent(str);
str.LoadString(IDS_STRING101);
pDC->TextOut(300,300,str);
pDC->BeginPath();
pDC->Rectangle(50,50,50+sz.cx,50+sz.cy);
pDC->EndPath();
pDC->SelectClipPath(RGN_XOR);
//CString str1;
//str1.LoadString(IDS_STRING101);
//pDC->TextOut(100,100,str1);
for(int i=0;i<=300;i+=10)
{
pDC->MoveTo(0,i);
pDC->LineTo(300,i);
pDC->MoveTo(i,0);
pDC->LineTo(i,300);
}
ReleaseDC(pDC);
*/
// TODO: 在此处为本机数据添加绘制代码
SetTimer(1,100,NULL);
}
上面两个函数,我随便放在任意一个函数中,都能实现我的功能,请问SetTimer(1,100,NULL);
是不是放在CMFCView中任意位置都可以啊?还是有什么讲究呢?
{
if (CView::OnCreate(lpCreateStruct) == -1)
return -1; // TODO: 在此添加您专用的创建代码
/* CClientDC dc(this);
TEXTMETRIC tm;
dc.GetTextMetrics(&tm);
CreateSolidCaret(tm.tmAveCharWidth/8,tm.tmHeight);
ShowCaret();*/
SetTimer(1,100,NULL);
return 0;
}
定义了一个SDI,我想问大家SetTimer(1,100,NULL);这个函数需要放在什么位置吗?
void CMFCView::OnDraw(CDC* /*pDC*/)
{
CMFCDoc* pDoc = GetDocument();
ASSERT_VALID(pDoc);
if (!pDoc)
return;
/* CString str("hello world!");
CDC *pDC=GetDC();
pDC->TextOut(50,50,str);
CSize sz=pDC->GetTextExtent(str);
str.LoadString(IDS_STRING101);
pDC->TextOut(300,300,str);
pDC->BeginPath();
pDC->Rectangle(50,50,50+sz.cx,50+sz.cy);
pDC->EndPath();
pDC->SelectClipPath(RGN_XOR);
//CString str1;
//str1.LoadString(IDS_STRING101);
//pDC->TextOut(100,100,str1);
for(int i=0;i<=300;i+=10)
{
pDC->MoveTo(0,i);
pDC->LineTo(300,i);
pDC->MoveTo(i,0);
pDC->LineTo(i,300);
}
ReleaseDC(pDC);
*/
// TODO: 在此处为本机数据添加绘制代码
SetTimer(1,100,NULL);
}
上面两个函数,我随便放在任意一个函数中,都能实现我的功能,请问SetTimer(1,100,NULL);
是不是放在CMFCView中任意位置都可以啊?还是有什么讲究呢?
解决方案 »
- (新手)关于OpenGL画图位置偏离问题,郁闷......
- 如何收拢主菜单(IDR_MAINFRAME),有无消息可用?
- CButton按钮问题
- vc++ 上 gluBuild2DMipmaps出现异常错误,过程和现象如下 大侠都来帮忙看看啊
- 我和CSDN的奖项无缘么???
- 高手救命,我的VC工程的资源文件(RC文件)损坏,以前的工作都白做了,有啥方法可以修复?急!!!
- CJ60LIB问题:如何分别给按钮的四个状态(down,mouse on, normal, invalid)分别置一张图片
- 【问】该如何将单文档应用程序设置为一运行就全屏??
- 初学者的困惑:日以继夜地搞了两天VC,实在是筋疲力尽了,可还是有些问题,向高手求救! 100+100(刚注册,只有200,我全给)
- VC中用自己编译的C运行时库代替现有的,如何操作??急!
- 问个,VC除了INI写配置文件外,还有什么合适的替代他
- 100分,麻烦几分钟帮写一个小程序,谢谢。------------ 标题要长!
放在OnCreate函数中!
以上的英文翻译成汉语为:当应用程序要求调用Create或CreateEx来创建Windows的窗口时框架会调用OnCreate函数。
CView::OnDraw()
每次重绘视图时都会调用OnDraw()函数,例如把最小化的窗口重新显示,被部分遮挡的窗口完全显示都会调用OnDraw()函数来重绘视图,因此如果你把SetTimer()函数放进OnDraw()函数体中可能会重复执行SetTimer()函数,从而造成错误。
框架调用CView::OnDraw()来进行屏幕显示,打印和打印预览,以上三种情况下所传递的设备是不同的。程序没有默认的执行方式(可能必须在三种情况下选一种)。你必须重载该函数来显示你的视图。你可以用指向CDC对象的pDC参数来调用图形设备接口。在绘制视图前你可以把图形设备接口资源,例如画笔或字体,选入设备,绘图完成之后你可以取消你先前的选择。通常情况下你的绘图代码是设备无关的;即不需要知道用来显示图像的设备是什么类型的。为了优化绘图,调用设备的RectVisible成员函数来寻找是否要绘制一个给定的矩形。如果你需要区分正常的屏幕显示和打印,调用设备上下文的IsPrinting成员函数。