现在有一组文字!!
我想将文字现在在DLG的特定位置!!
并且要BITBLT上去!!我该怎么去做啊!!BITBLT我就知道如何将位图复制到当前DC上啊,可是如何将文字显示,我就不太清楚了还有,我要实现文字在DLG的特定矩形内实现滚屏,我该如何做呢??挺困惑的,给高分!!如果您有时间,请加我Q,我们详谈!!14645094

解决方案 »

  1.   

    贴图片用BitBlt,写字用TextOut,ExtTextOut文字在DLG的特定矩形内实现滚屏
    //怎么滚?
      

  2.   

    创建一个兼容内存DC,然后用textout把文字画到内存DC上,然后BITBLT到DLG上,
    不知道你说的是不是这个意思。滚屏,可以用BITBLT时设置不同的参数(xSrc,ySrc)实现
      

  3.   

    先把要滚动的区域做成位图,显示时复制一张位图,选入内存DC,在把文字输出到滚动后的位置上,然后BitBlt,完后选出位图,删除复制的位图和内存DC。
      

  4.   

    比方说我在DLG上  GetWindowRect(),得到整个DLG的矩形区域为allrect,我想在这个allrect的top = 10,left = 50的位置设置一个区域,用来实现滚屏效果!
    最开始我是这样想的
                               nDC = CreateCompatibleDC(hDC); SIZE n_size;
    GetTextExtentExPoint(hDC,_T("中"),_tcslen(_T("中")),NULL,NULL,NULL,&n_size);
    n_hight = 11*n_size.cy;
    MoveRect.top = 0;
    MoveRect.left = 0;
    MoveRect.right = allrect.right;
    MoveRect.bottom = n_hight;
     
                            SelectObject(nDC,CreateRectRgnIndirect(&MoveRect));然后接着就是写数据到MoveRect里面
                               DrawText(nDC, _T("123123"), -1, &MoveRect, DT_LEFT);在然后我就BITBLT
                           BitBlt(hDC, allrect.left, allrect + 16, allrect.right-allrect.left, 18, nDC, 0, 0, SRCCOPY);
                         我总觉得BITBLT的2,3位置应该是把内存中RECT复制到DLG上的左上角坐标,然后我通过盖面后面的两个坐标实现滚动啊!!可效果不想我想的那样啊,不知道哪错了!
      

  5.   


    代码都是按编写者的意思去执行的,机器不会曲解你的意思。
    没有达到效果,只能说明的代码不对。
    你那个MoveRect的值是个定值,当然没有移动的效果。需要加个定时器,不断改变MoveRect.left的值才是。
      

  6.   

    CreateCompatibleBitmap、SelectObject。
      

  7.   


    1. 不知道你到底采用了什么方式去“写”
    2. 你要写桌面?  那没看到你有取桌面的HDC。
      

  8.   

    简单文字输出用 dc TextOut
    要实现像你所说的滚屏的话,CodeProject 上有个 CCloudsCtrl
    搜索一下,就是你想要的。
      

  9.   

    有必要那么复杂吗?
    不就是在对话上显示字符串嘛!
    取得对话框的DC后,你爱怎么写就怎么写!dc = this->GetDC();
      
    dc->SetBkMode(TRANSPARENT);                          //透明显示
    dc->SetTextColor(m_NewColor);      
    dc->DrawText("sadasdasd", &rect, DT_LEFT|DT_VCENTER|DT_SINGLELINE);   
      

  10.   

    不用这么麻烦吧。先在你想显示的地方设一个静态文本
    然后在Dlg 的OnPaint()里加一句
    ::SetDlgItemText(m_hWnd,IDC_STATIC1,"yourstr");