Нарисовать "TPanel" в WINAPI? - PullRequest
0 голосов
/ 27 октября 2010

Я хочу расширить диалог открытия / сохранения с помощью «выпадающего списка», который должен выглядеть как TPanel (скос).Код уже есть - я использую CreateWindowEx () с именем WNDCLASS "Edit".

Я искал решение для рисования TPanel (или скошенного STATIC) с чистым WinAPI, но ничего не нашел.

MS Spy ++ сообщает мне, что у TPanel есть имя WNDCLASS "TPanel" (что не похоже на чистый WinAPI?)

Я попробовал следующий код, но получаю AVкак только я попробую имя класса "TPanel" вместо "EDIT" или "STATIC".

procedure TForm1.Button1Click(Sender: TObject);
begin
  CreateWindowEx(
  WS_EX_LEFT or WS_EX_LTRREADING or WS_EX_RIGHTSCROLLBAR or WS_EX_CONTROLPARENT,
  'TPanel',
  'Hello World',
  WS_CHILDWINDOW or WS_VISIBLE or WS_CLIPSIBLINGS or WS_CLIPCHILDREN,
  0, 0, 100, 100,
  Handle, 0, hInstance, nil);
end;

Не могли бы вы мне помочь?

С уважениемДаниэль Маршалл

PS: Подскажите, пожалуйста, как я пишу выделенный Delphi-код код в StackOverflow.com?

1 Ответ

6 голосов
/ 27 октября 2010

TPanel - это чистый элемент управления VCL, который не является оболочкой для оконного класса Win32. Взгляните на исходный код TPanel (в источниках VCL), чтобы увидеть, как именно он нарисован. То, что вам нужно, это заполнить внутренности сплошным цветом и нарисовать границу. Если вам нужна поддержка тем, все становится сложнее.

Кроме того, почему вы хотите использовать чистый WinAPI? Вы можете встроить элементы управления VCL в диалог открытия / сохранения. Взгляните на TOpenPictureDialog в исходном коде VCL - он делает именно то, что вам нужно.

...