我想在按钮上写字 ,怎么写的地方总是错的 
CPaintDC dc(this);
GetDlgItem(IDC_BUTTON_COMMUNICATE)->GetClientRect(&myRect);
ClientToScreen(&myRect);
dc.DrawText(str,8,&myRect,DT_CENTER);

解决方案 »

  1.   

    CClientDC dc(this);
    CPaintDC 只在OnPaint时用
      

  2.   

    具体情况是这样子的:
    我先将一张图load到button上,作为按钮的背景色,然后就发现按钮的标题显示不出来了(标题是变化的,比如说第一次是“开始“ 夏诗词显示就是“停止“了)
    用SetWindowText()和DrawText()(是在OnPaint中)都不能显示,
    请问这种情况下,是不是只有用自绘按钮
      

  3.   

    同意vcmute(横秋),CPaintDC 只在OnPaint时用
      

  4.   

    我下了个ButtonST的类解决了这个问题, 谢谢诸位了,但是我还是不明白 图load到button上,用SetWindowText()为什么 就不能显示了
      

  5.   

    实际是显示了 不过被盖住了
    ButtonST不错 就用它吧
    还有一个XP风格的 叫Xp....
    上Codeproject上看看 就知道了
      

  6.   

    两个办法:
    1、利用父窗口客户区:
    CPaintDC dc(this);
    GetDlgItem(IDC_BUTTON_COMMUNICATE)->GetClientRect(&myRect);
    GetDlgItem(IDC_BUTTON_COMMUNICATE)->ClientToScreen(&myRect);<----****
    ScreenToClient(&myRect);                                    <----****
    dc.DrawText(str,8,&myRect,DT_CENTER);
    2、利用按钮客户区:
    CDC *pDC=GetDlgItem(IDC_BUTTON_COMMUNICATE)->GetDC();
    GetDlgItem(IDC_BUTTON_COMMUNICATE)->GetClientRect(&myRect);
    pDC->DrawText(str,8,&myRect,DT_CENTER);
    GetDlgItem(IDC_BUTTON_COMMUNICATE)->ReleaseDC(pDC);
    GetDlgItem(IDC_BUTTON_COMMUNICATE)->ValidateRect(NULL);     <----****
      

  7.   

    被遮盖了,用在ON_DRAW里只能是CClientDC 另外就是虚函数仁兄所讲的方法吧我也没有试过希望是对的