void CJlView::OnButton() 
{
CString buf="ok";
CClientDC dc(this);
dc.TextOut(0,0,buf);
}
单文档,在工具条里面的一个BUTTON .它对应的函数就是上面滴,按一下就显示
"ok" 。 但是最大化了,字符就消失了!!请问应该在ONSIZE()里面怎么写?
还有,上面实现的是只能显示一个"ok" 如果要实现按一下显示,再按一下 ,就在
下一行显示, 就是第一行字符不消失,应该怎么办?
希望各位好心的GG帮帮偶~~

解决方案 »

  1.   

    void CJlView::OnButton() 
    {
        m_nOkCount++;
    }在CJlView的OnDraw中绘画,按钮只改变OK的个数
      

  2.   

    简单的说,任何窗口的变化都会擦除窗口里的内容,并且调用OnDraw,所以需要重绘。
      

  3.   


    明白了 一语惊醒梦中人啊 呵呵 ONSIZE()的作用是什么呢  ?
     还有偶的第2个问题(显示) 应该怎么做呢?
      

  4.   

    窗口大小发生变化时,ONSIZE()   里面的东西就会执行了OnDraw(CDC* pDC)
    {
        pDC->TextOut(x,y,str);
    }
    要是要求不高的话,你把 x,y 弄得差不多位置就行了
      

  5.   

    up
    好心人啊  你们help me 啊
      

  6.   

    你可以这样设计你的程序,
    1、你每次按一个按钮就在一个字符串变量中加入一行,或者在数组/链表中加入一个
    项目
    2、重载OnPaint函数,在函数中绘制,绘制的代码如下(只能在OnPaint中用)
    //以字符串变量中有多个OK为例,中间用|隔开
    //g_str内容为"OK|OK|OK|OK|"
    CPaintDC dc(this);
    CString strItem;
    CString strContent = g_str;
    int nY = 0;
    while(strContent.Find("|") != -1)
    {
        strItem = strContent.Left(strContent.Find("|"));
        CRect rcText;
        dc.DrawText(strItem , strItem.GetLength , &rcText , DT_CALCRECT);
        CRect rcDraw;
        rcDraw.left = 0;    strContent = strContent.Right(strContent.GetLength() - strContent.Find("|") - 1);
    }
      

  7.   

    对不起刚才没写完就误操作了你可以这样设计你的程序,
    1、你每次按一个按钮就在一个字符串变量中加入一行,或者在数组/链表中加入一个
    项目
    2、重载OnPaint函数,在函数中绘制,绘制的代码如下(只能在OnPaint中用)
    //以字符串变量中有多个OK为例,中间用|隔开
    //g_str内容为"OK|OK|OK|OK|"
    CPaintDC dc(this);
    CString strItem;
    CString strContent = g_str;
    int nY = 0;
    while(strContent.Find("|") != -1)
    {
        strItem = strContent.Left(strContent.Find("|"));
        CRect rcText;
        dc.DrawText(strItem , strItem.GetLength , &rcText , DT_CALCRECT);
        CRect rcDraw;
        rcDraw.left = 0;
        rcDraw.right = rcText.right;
        rcDraw.top = nY * rcText.Height();
        rcDraw.bottom = rcDraw.top + rcText.Height();
        dc.DrawText(strItem , strItem.GetLength , &rcDraw , DT_LEFT);
        nY ++;
        strContent = strContent.Right(strContent.GetLength() - strContent.Find("|") - 1);
    }