你不让他TextOut不就显示不出来了?

解决方案 »

  1.   

    我最后的目的是获得TextOut()后,在hdc里抓取输出的图片。
    有没方法不输出在界面,只在内存中,就可以抓取
      

  2.   

    意思似乎不太明了 不过因该是如此.
    你可以再创建一个内存DC,你现在用的dc是窗体DC,让它只显示在内存中 只有输出到内存DC中.
    HDC dc2;
    dc2=CreateCompatibleDC(0);//创建内存DC
    HBITMAP hBmap=CreateCompatibleBitmap(dc,100,100);//创建空位图
    SelectObject(dc2_01,hBmap);//将空位图选择入内存DC
    dc2->TextOut(0,0,szText);//将文字写入新的内存DC中
    //然后可以这样试一下 输出文字在窗体左上角
    BitBlt(dc,0,0,100,100,dc2,0,0,SRCCOPY);
      

  3.   

    HDC hdc = dc->GetSafeHdc();
    LONG width = GetDeviceCaps(hdc, HORZSIZE);
    LONG hight = GetDeviceCaps(hdc, VERTSIZE);HDC hMenDC = CreateCompatibleDC(hdc);
    BitBlt(hMenDC,0,0,width,hight,hdc,0,0,SRCCOPY);这样你的抓屏就完全拷贝到内存中了,没有显示到任何地方。其实说白了就是没有调用画图函数就不会显示出来
      

  4.   

    简单,做一个内存DC就可以了,把TextOut画到内存里,cdc是getdc得到的
    dc->CreateCompatibleDC(cdc)
    dc->CreateDC("DisPlay", NULL, NULL, NULL);
    HDC hdc = dc->GetSafeHdc();
    dc->TextOut(0,0,szText);
    GetTextExtentPoint32 (hdc, szText, lstrlen (szText), &size);
    dc->deletedc();