VC++怎么 根据HTML代码的样子生成图片,就是类似IE网页的打印预览
图片保存出来就行

解决方案 »

  1.   


    WB.Navigate(L"http://www.youku.com", 0, 0, 0, 0); IWebBrowser2* pIWebBrowser2 = (IWebBrowser2*)WB.get_Document(); // 得到IWebBrowser2指针  
    HWND hTridentWnd = NULL;
    IOleWindow* pOleWin = NULL;
    pIWebBrowser2->QueryInterface(IID_PPV_ARGS(&pOleWin));
    pOleWin->GetWindow(&hTridentWnd); // 得到Trident窗口handle (类名"Internet Explorer_Server")  
    CDC *hImageDC = GetDC();
    ::PrintWindow(hTridentWnd, *hImageDC, PW_CLIENTONLY);
    HBITMAP bmDstp = CreateCompatibleBitmap(*hImageDC, 400, 400); BITMAP bmDst;
    GetObject(bmDstp, sizeof(BITMAP), &bmDst); GetObject(*hImageDC, sizeof(BITMAP), &bmDst);
    char *pBuf = new char[bmDst.bmWidthBytes*bmDst.bmHeight];
    BITMAPINFO bmi;
    memset(&bmi, 0, sizeof(BITMAPINFO));
    bmi.bmiHeader.biSize = sizeof(BITMAPINFOHEADER);
    bmi.bmiHeader.biWidth = bmDst.bmWidth;
    bmi.bmiHeader.biHeight = bmDst.bmHeight;
    bmi.bmiHeader.biPlanes = 1;
    bmi.bmiHeader.biBitCount = bmDst.bmBitsPixel;
    bmi.bmiHeader.biCompression = BI_RGB;
    bmi.bmiHeader.biSizeImage = 0;
    bmi.bmiHeader.biXPelsPerMeter = 0;
    bmi.bmiHeader.biYPelsPerMeter = 0;
    bmi.bmiHeader.biClrUsed = 0;
    bmi.bmiHeader.biClrImportant = 0;
    GetDIBits(*hImageDC, (HBITMAP)bmDstp, 0, bmDst.bmHeight, pBuf,
    &bmi, DIB_RGB_COLORS); // 写回文件
    BITMAPFILEHEADER fileHd; //输出的BMP文件相同,文件头共用
    fileHd.bfType = 0x4d42;
    fileHd.bfSize = sizeof(fileHd)+sizeof(BITMAPINFOHEADER)+(long int)bmDst.bmWidth*bmDst.bmHeight * 4;
    fileHd.bfReserved1 = 0;
    fileHd.bfReserved2 = 0;
    fileHd.bfOffBits = sizeof(fileHd)+sizeof(BITMAPINFOHEADER); HANDLE hFile;
    hFile = CreateFile(L"c:\\11.bmp", GENERIC_WRITE, FILE_SHARE_WRITE, NULL, CREATE_ALWAYS, FILE_ATTRIBUTE_NORMAL, NULL);
    DWORD dwBytesWritten;
    WriteFile(hFile, &fileHd, sizeof(fileHd), &dwBytesWritten, NULL);
    WriteFile(hFile, &bmi, sizeof(bmi), &dwBytesWritten, NULL);
    WriteFile(hFile, pBuf, bmDst.bmWidthBytes*bmDst.bmHeight, &dwBytesWritten, NULL);
    CloseHandle(hFile);
    delete[] pBuf;
    我乱抄了一下代码   为什么写出来的图片是全黑色? 求修改