2014-10-23 1 views
0

У меня есть компонент кожи, который рисует ComboBox, как это:Свободная переменная создания GetWindowDC в Delphi

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

Что мне делать, чтобы попытаться уничтожить эту переменную.

+0

@DavidHeffernan код Legacy, мы смотрим на проблему Из системных ресурсов. Мы стараемся свести к минимуму последствия. – mtsys

ответ

5

Параметры в вашем вызове ReleaseDC() обращены назад. Прочтите documentation. Первый параметр должен быть HWND, что HDC пришел, а второй параметр должен быть сам HDC:

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

D'oh! Конечно! Я чувствую себя глупо, что этого не хватает. Еще одно хорошее объявление для проверки возвращаемых значений. –

Смежные вопросы