我遇到这样一个问题,我有一个dialog,上面有一个button,我点击dialog,触发事件,在button上textout一些文字,但是窗口移动后文字消失,我知道这是重画的问题,那位能解决,以前没有在dialog上做过重画,好像只能用onPaint

解决方案 »

  1.   

    你textout之后,updatedata了吗??
      

  2.   

    我放在onPaint里面,好像不行啊
    void CA1Dlg::OnPaint() 
    {
    if (IsIconic())
    {
    CPaintDC dc(this); // device context for painting SendMessage(WM_ICONERASEBKGND, (WPARAM) dc.GetSafeHdc(), 0); // Center icon in client rectangle
    int cxIcon = GetSystemMetrics(SM_CXICON);
    int cyIcon = GetSystemMetrics(SM_CYICON);
    CRect rect;
    GetClientRect(&rect);
    int x = (rect.Width() - cxIcon + 1) / 2;
    int y = (rect.Height() - cyIcon + 1) / 2; // Draw the icon
    dc.DrawIcon(x, y, m_hIcon);
    }
    else
    {
    CDialog::OnPaint();

    CWnd* pwnd1 = GetDlgItem(IDC_BUTTON1);
    CWnd* pwnd2 = GetDlgItem(IDC_BUTTON2);
    CDC* pdc = NULL;
    if(pwnd1)
    {
    pdc = pwnd1->GetDC();
    //pwnd1->
    pdc->TextOut(0,0,"ASD");
    }
    UpdateData();
    }
    }
      

  3.   

    楼上的,你说的我知道啊,这是改变Button的文字内容,但现在我要做的是在Button上画啊,不是改变Button本身的标题内容哪位有方法?
      

  4.   

    InvalidRect函数怎么样??首先得到你要重画的区域的rect然后再调用此函数。
    其功能你应该知道的,这和在view里画图是一样的道理。updatedata之所以不行的原因是
    因为你可能没有写参数,其参数为FALSE时是向空间更新,TRUE时时向空间的变量更新!!!
      

  5.   

    你应该将这个textout放到button类的onPaint方法里,建议你从CButton类派生自己的button类,重载一下onPaint方法,然后你就可以在你的button类里重画了