我在框架类中定义了两个PBULIC 类型的变量,然后在视图类的ONdraw函数中调用 怎么会出错啊?
框架类中的一个函数:
void CMainFrame::OnReceive()
{
a=1;//a为P框架类中BULIC 类型的变量
b=REC[1];//a为P框架类中BULIC 类型的变量,REC[1是::OnReceive()中的局部变量}在视图类中的一个函数:
void CFuwuqiView::OnDraw(CDC* pDC)
{
。
CMainFrame pt;
pt.a;
while(pt.a==1)
{
int c;
c=pt.b;
//输出C的值///
........ }
}程序运行是,确定了会执行void CMainFrame::OnReceive()这个函数,但是在while(pt.a==1)中设置了断点,程序就是进不去,也不会输出c的值。请问为什么?
框架类中的一个函数:
void CMainFrame::OnReceive()
{
a=1;//a为P框架类中BULIC 类型的变量
b=REC[1];//a为P框架类中BULIC 类型的变量,REC[1是::OnReceive()中的局部变量}在视图类中的一个函数:
void CFuwuqiView::OnDraw(CDC* pDC)
{
。
CMainFrame pt;
pt.a;
while(pt.a==1)
{
int c;
c=pt.b;
//输出C的值///
........ }
}程序运行是,确定了会执行void CMainFrame::OnReceive()这个函数,但是在while(pt.a==1)中设置了断点,程序就是进不去,也不会输出c的值。请问为什么?
{
。
CMainFrame pt;
pt.a;
while(pt.a==1)
{
int c;
c=pt.b;
//输出C的值///
........ }
==兄弟,你刚用VC不到一个月吧?
新人有个很大的缺陷就是对类和实例的概念不清楚。
{
。
CMainFrame *p = (CMainFrame*)AfxGetApp()->m_pMainWnd;
if(pt->a==1)
{
int c;
c=pt->b;
//输出C的值///
........ }
有 错误啊!
我漏了一个就是在while()里面给pt.a=0;
if(pt->a==1)
{
应该 是
CMainFrame *pt = (CMainFrame*)AfxGetApp()->m_pMainWnd;
谢谢你啊。如过能 给解释解释 那更好
在什么地方定义 才算是一个对象呢?我看那个孙鑫视频 好像说的对象啊?
这样这个空间和当前正在运行的主框架对象就会是同一个空间?是吗
//if(pt->huatupanduan==1)
{
z=pt->recedata;//接收到的数据 DC.MoveTo(gridRect.left+(x*(int)datadx),gridRect.bottom-y*(int)datady);//起始点:第一次为绘图为原点,之后为上一次的结束点
DC.LineTo(gridRect.left+((x+1)*(int)datadx),gridRect.bottom-(z)*(int)datady);//
x++;
y=z;
pt->huatupanduan=0;
}
大哥 在帮个忙。为什么 这个要变化一下窗口尺寸 才能显示出来呢?我加分
因为视初始化和frame初始化时间上存在冲突。
//if(pt->huatupanduan==1)
{
z=pt->recedata;//接收到的数据DC.MoveTo(gridRect.left+(x*(int)datadx),gridRect.bottom-y*(int)datady);//起始点:第一次为绘图为原点,之后为上一次的结束点
DC.LineTo(gridRect.left+((x+1)*(int)datadx),gridRect.bottom-(z)*(int)datady);//
x++;
y=z;
pt->huatupanduan=0;}
大哥 在帮个忙。为什么 这个要变化一下窗口尺寸 才能显示出来呢?我加分
============
变换窗口大小,等价于
改变Rects,Invalidate();
因此,你如果想主动改变窗口,就调Invalidate();
你的OnReceive先运行,还是OnDraw先运行?怎么看也是OnDraw先运行,这时候你判断的属性还没有变为1呢,必须OnReceive执行后才会变成1,这时候OnDraw已经运行结束了,只有等待下次界面需要刷新时才会再次运行......
真是口渴。什么代码都往OnDraw中放,照这样下去,你的系统只需要这一个函数......
CMainFrame *p = (CMainFrame*)AfxGetMainWnd();
告诉你,在应用程序启动时,就创建了一个实例,而CMainFrame pt又定了一个实例,这两个东西互不干涉.现在明白了没.