首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > VC/MFC >

MFC新手求教自定义函数有关问题

2012-08-02 
MFC新手求教自定义函数问题想制作一个类似钟摆的画线程序在View类中想自定义一个Linex()函数void CLineVi

MFC新手求教自定义函数问题
想制作一个类似钟摆的画线程序 在View类中想自定义一个Linex();函数

void CLineView::Linex(){
pDC->MoveTo(530,90);
int x=530;
int y;
int i=0;
if(i==0){
if(x<=580){
x++;
y=(int)(90+sqrt(2500-pow(x-580,2)));
if(x==480){
i=1;
}
pDC->LineTo(x,y);

}
}
if(i==1){
if(x>=480){
x--;
pDC->LineTo(x,y);
y=(int)(90+sqrt(2500-pow(x-580,2)));
if(x==480){
i=0;
}
}
}
}
请问如何在这个函数中使用OnDraw中的LineTo?需要加什么?


还有一个问题
OnTimer如下
void CLineView::OnTimer(UINT nIDEvent) 
{
// TODO: Add your message handler code here and/or call default
void Linex();
switch(nIDEvent){
case Timer1:Linex();
break;
}

CView::OnTimer(nIDEvent);
}
请问SetTimer(Timer1,1000,NULL);这句应该放在什么地方?
最初我放在OnDraw里面的。。。各种不明白。。。

求各位大神!!!!!

[解决办法]
代码设计有问题:
1 SetTimer(Timer1,1000,NULL) 放在 View的Initial初始化中
2 在OnTimer中发送WM_PAINT消息
3 在OnDraw中调用Linex()函数


[解决办法]
SetTimer(Timer1,1000,NULL);放在OnInitialUpdate中
[解决办法]
第一个问题
直接重写虚函数void OnDraw( CDC* pDC )
然后就能用dc类了
[解决办法]
MFC的结构和主要函数的运行机理需要了解一下。这样有助于你理解OnTimer和OnDraw在你程序中的作用。
比如OnDraw和View是很紧密的,它完成了你不必操心的工作,你可以定义自己有特殊作用的函数,与其共同达成目标。所以你自己的函数最好是在OnDraw中调用,以构成整体功能。

热点排行