Pascal到C的翻译

Pascal到C的翻译,c,winapi,graphics,gdi,freepascal,C,Winapi,Graphics,Gdi,Freepascal,我有一个用pascal拍摄屏幕的程序: uses Graphics, LCLIntf, LCLType; var Screen: TBitmap; ScreenDC: HDC; begin Screen := TBitmap.Create; ScreenDC := GetDC(0); Screen.LoadFromDevice(ScreenDC); ReleaseDC(0, ScreenDC);

我有一个用pascal拍摄屏幕的程序:

uses Graphics, 
     LCLIntf, 
     LCLType;

var  
     Screen:   TBitmap;
     ScreenDC: HDC;
begin
     Screen    := TBitmap.Create;
     ScreenDC  := GetDC(0);
     Screen.LoadFromDevice(ScreenDC);
     ReleaseDC(0, ScreenDC);
     Screen.SaveToFile("Screen.bmp");
end.
我的问题在于
LoadFromDevice()
SaveToFile()
函数。什么函数(如果有的话)可以用来在C编程语言中实现这些。尽量远离第三方图书馆。(WinAPI)

看看这个

HDC hDC = GetDC(g_hWnd); 
LPRECT rect = (LPRECT)malloc(sizeof(RECT)); 
GetWindowRect(g_hWnd,rect); 
int h = rect->right - rect->left;
int w = rect->bottom - rect->top; 
LPRECT rect = (LPRECT)malloc(sizeof(RECT)); 

GetWindowRect(g_hWnd,rect); 
HBITMAP hBmp = CreateCompatibleBitmap(hDC,w,h); 
PBITMAPINFO pbmi;
pbmi = CreateBitmapInfoStruct(g_hWnd,hBmp); 

CreateBMPFile(g_hWnd, TEXT("c:\\TEMPO\\TestG2.bmp"), pbmi, hBmp, hDC) ;
ReleaseDC(g_hWnd,hDC); 
DeleteObject(hBmp); 
DeleteObject(pbmi); 

if (rect != nullptr)
    free(rect); 

WinAPI是第三方库。无论如何,谷歌搜索“winapi截图”应该会给你很多参考资料。来自freepascal维基。什么都没有。在C语言中没有“屏幕”这样的东西。您将需要一些特定于平台的功能。在你的例子中,winapi听起来是一个很好的候选者。是的,这不是将Pascal转换为C,而是从使用一组API转换为使用另一组API。在两个不同的Pascal平台之间,您可以做基本相同的工作。您所说的“第三方”API是什么意思?根据您的工作定义,“第一方API”的示例是什么?为什么要使用
RECT
?为什么不使用堆栈分配?