可以在你重载的 DoShow 中这样获得:
var
hDlgItm: HWND;
OKRect, CancelRect: TRect;
begin
hDlgItm := GetDlgItm(GetParent(Self.Handle), IDOK); //得到OK按钮的句柄
if hDlgItm <> 0 then
GetWindowRect(hDlgItm, OKRect);
hDlgItm := GetDlgItm(GetParent(Self.Handle), IDCANCEL); //得到CANCEL按钮的句柄
if hDlgItm <> 0 then
GetWindowRect(hDlgItm, CANCELRect);
...
end;
在 DoShow 中 Self.Handle 应该是有效的。好象在Dialog Execute 之前或之后,Handle
都是 0,Dialog 窗口不存在。