Pascal到C的翻译
我有一个用pascal拍摄屏幕的程序: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);
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
?为什么不使用堆栈分配?