首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > .NET > .NET >

PrintWindow 的有关问题

2012-04-02 
PrintWindow 的问题!functionPrintWindow(hWnd:HWNDhDCBlt:HWNDnFlags:Word):Boolfarexternaluser32.d

PrintWindow 的问题!
function   PrintWindow(hWnd:   HWND;   hDCBlt:   HWND;   nFlags:   Word):   Bool;   far;   external   'user32.dll ';

procedure   TMainform.Button2Click(Sender:   TObject);
var
    lHwnd:   HWND;
    lhDC,   lhBmp,   lhMemDC:   Integer;
    lRect:   TRect;
    lBmp:   TBitmap;
begin
    if   lvCurWin.Selected   =   nil   then   Exit;
    lHwnd   :=   StrToInt(lvCurWin.Selected.SubItems[0]);
    {   用了一个   ListView   保存当前窗口的句柄   }
    lhDC   :=   GetWindowDC(lHwnd);
    if   lhDC   <>   0   then
    begin
        lhMemDC   :=   CreateCompatibleDC(lhDC);
        if   lhMemDC   <>   0   then
        begin
            GetWindowRect(lHwnd,   lRect);
            lhBmp   :=   CreateCompatibleBitmap(lhDC,   lRect.Right-lRect.Left,   lRect.Bottom-lRect.Top);
            if   lhBmp   <>   0   then
            begin
                SelectObject(lhMemDC,   lhBmp);
                if   not   PrintWindow(lHwnd,   lhMemDC,   0)   then
                    ShowMessage( '不成功! ');   {   老是提示不成功   }
                lBmp   :=   TBitmap.Create;
                lBmp.Handle   :=   lhBmp;
                lBmp.SaveToFile( 'c:\abc.bmp ');
                ImgTum.Picture.Bitmap.Assign(lBmp);
                lBmp.Free;
                DeleteObject(lhBmp);
            end;
            DeleteObject(lhMemDC);
        end;
        ReleaseDC(lHwnd,   lhDC);
    end;
end;

上面代码,为什么执行   PrintWindow   时老是提示不成功呢!保存的   Bmp   文件是一团黑。

[解决办法]
function PrintWindow(hWnd: HWND; hDCBlt: HWND; nFlags: Word): Bool; far; external 'user32.dll ';
是否调错了
[解决办法]
function PrintWindow(hWnd: HWND; hDCBlt: HWND; nFlags: Word): Bool; stdcall; external 'user32.dll ';
改成这样试试
[解决办法]
function PrintWindow(Wnd: HWND; hDCBlt: HDC; nFlags: DWord): Bool; stdcall external 'user32.dll ';
改成这样就可以了,以前用过。
另外注意该函数95,98,win me 不支持

热点排行