从今天开始,正式写Blog.将自己平时的一点积累,记录下来,减慢记忆的衰退时间.
function EnumFontsProc1(
LOGFONT: PLOGFONT; // pointer to logical-font data
TEXTMETRIC:PTEXTMETRIC; // pointer to physical-font data
dwType:DWORD; // font type
lpData:LParam // pointer to application-defined data
):integer;stdcall;
begin
TMemo(lpData).Lines.Add(LOGFONT.lfFaceName);
result:=1;
end;
procedure TForm1.Button1Click(Sender: TObject);
var
dc:HDC;
begin
dc:=GetDC(0);
EnumFonts(dc,nil,@EnumFontsProc1,Pointer(self.Memo1));
releaseDC(0,dc);
end;
上面的例子是一个枚举当前的字体的过程.这个例子掌握了如下的几个知识:
1:var参数.
我们可以把 LOGFONT: PLOGFONT; // pointer to logical-font data 换成 var LOGFONT: LOGFONT; // pointer to logical-font data. 这样可以说明,var参数实际是传入的一个地址值.但是必须是传入变量本身.只要在函数的变量前加了var参数,delphi环境会自动的转变这个参数为一地址.
2:回调函数:
以下是一个c++ 中函数指针的例子.
int test1(int i)
{
}