在WINAPI中画一个"TPanel"?

Dan*_*all 0 delphi winapi panel topendialog

我想用一个"drop-box"扩展一个打开/保存对话框,它应该看起来像一个TPanel(斜角).代码已经存在 - 我使用带有WNDCLASS名称"Edit"的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;
Run Code Online (Sandbox Code Playgroud)

你能帮我么?

关心
Daniel Marschall

PS:你能告诉我如何在StackOverflow.com中编写delphi高亮显示的代码吗?

Eug*_*its 6

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

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