dglopengl-02------01例子学习

procedure TForm1.FormCreate(Sender: TObject);
begin
DC := GetDC(Handle);//获取句柄
if not InitOpenGL then
Application.Terminate;//如果初始化opengl失败则退出程序
RC := CreateRenderingContext(DC, [opDoubleBuffered], 32, 24, 0, 0, 0, 0);

//function CreateRenderingContext(DC: HDC; Options: TRCOptions; ColorBits, ZBits, StencilBits, AccumBits, AuxBuffers: Integer; Layer: Integer): HGLRC;

//创建渲染环境
ActivateRenderingContext(DC, RC);//激活渲染环境
//其他初始化任务
SetUpGL;
Application.OnIdle:=IdleHandler;
end;

首先是初始化opengl,如果是opengl原始pas的初始化,会写的很长一溜,dglopengl把初始化的代码进行了封装,稍微简洁了很多。

https://docs.microsoft.com/zh-cn/windows/win32/api/winuser/nf-winuser-getdc

GetDC功能

所述的GetDC函数检索句柄用于指定窗口的客户区或整个屏幕的设备上下文(DC)。您可以在后续的GDI函数中使用返回的句柄来绘制DC。设备上下文是一个不透明的数据结构,其值由GDI内部使用。

GetDCEx函数是一个扩展的GetDC,这给出了一个应用过限幅在客户区如何和是否发生更多的控制。

句法

C ++
HDC GetDC(
  HWND hWnd
);

参量

hWnd

要获取其DC的窗口的句柄。如果此值为NULL,则GetDC检索整个屏幕的DC。

返回值

如果函数成功,则返回值是指定窗口的客户区DC的句柄。

如果函数失败,则返回值为NULL

备注

的GetDC函数检索常见,类或私有DC取决于指定窗口的类样式。对于类和专用DC,GetDC保留先前分配的属性不变。但是,对于常见的DC,GetDC每次检索DC时都会为其分配默认属性。例如,默认字体是System,这是位图字体。因此,GetDC返回的通用DC的句柄不会告诉您绘制窗口时使用了什么字体,颜色或画笔。要确定字体,请调用GetTextFace

请注意,DC的句柄只能在任何时候由单个线程使用。

用公共DC绘画后,必须调用ReleaseDC函数以释放DC。类别DC和私有DC不必释放。必须从与调用GetDC相同的线程中调用ReleaseDCDC的数量仅受可用内存的限制。

例子

有关示例,请参见用鼠标绘图

 

要求

表1
  
最低支持的客户 Windows 2000 Professional [仅桌面应用程序]
最低支持的服务器 Windows 2000 Server [仅桌面应用程序]
目标平台 视窗
标头 winuser.h(包括Windows.h)
图书馆 User32.lib
动态链接库 User32.dll

 

posted @ 2020-03-31 15:22  下雨天不爱打伞  阅读(206)  评论(0编辑  收藏  举报