在WINAPI中画一个“TPanel”?

时间:2010-10-27 08:31:10

标签: delphi winapi panel topendialog

我想用“drop-box”扩展一个打开/保存对话框,它应该看起来像TPanel(斜角)。代码已经存在 - 我使用带有WNDCLASS名称“编辑”的CreateWindowEx()。

我已经搜索了一个用纯WinAPI绘制TPanel(分别是斜面STATIC)的解决方案,但没有找到任何东西。

MS Spy ++告诉我,TPanel的WNDCLASS名称为“TPanel”(听起来不像纯WinAPI?)

我现在尝试使用以下代码,但是当我尝试使用类名“TPanel”而不是“EDIT”或“STATIC”时,我会得到一个AV。

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:你能告诉我如何在StackOverflow.com上编写delphi高亮显示的代码吗?

1 个答案:

答案 0 :(得分:6)

TPanel是纯VCL控件,它不是Win32窗口类的包装器。 看一下TPanel的源代码(在VCL源代码中),看看它是如何绘制的。你需要的是用纯色填充内部并涂上边框。如果你想要主题支持,事情变得更加棘手。

另外,为什么要使用纯WinAPI?您可以在打开/保存对话框中嵌入VCL控件。在VCL源代码中查看TOpenPictureDialog - 它完全符合您的需求。