0

我想用一个看起来像 TPanel(斜角)的“下拉框”来扩展打开/保存对话框。代码已经存在 - 我使用 WNDCLASS 名称为“Edit”的 CreateWindowEx()。

我已经搜索了一种使用纯 WinAPI 绘制 TPanel(或斜面静态)的解决方案,但没有找到任何东西。

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 突出显示的代码吗?

4

1 回答 1

6

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

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

于 2010-10-27T08:47:06.297 回答