自由变量在Delphi中创建GetWindowDC

时间:2014-10-23 17:28:22

标签: delphi

我有一个皮肤组件,它绘制了一个ComboBox,如下所示:

procedure TBaseComboBox.DrawBorders;
var
  DC: HDC;
begin
  DC := GetWindowDC(Handle);
  try
    DrawControlBorder(DC);

    if Style <> csSimple then
      DrawButtonBorder(DC);

  finally
    ReleaseDC(DC, Handle);
  end;
end;

我的问题是,在运行ReleaseDC时,组件不会被销毁。我设法使用程序GDIView 1.6

得出了这个结论

我应该怎么做才能破坏这个变量。

1 个答案:

答案 0 :(得分:5)

ReleaseDC()来电中的参数是倒退的。阅读documentation。第一个参数必须是HWND来自的HDC,第二个参数必须是HDC本身:

//ReleaseDC(DC, Handle);
ReleaseDC(Handle, DC);