Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Delphi: ActiveX/СОМ/CORBA > ActiveX DialogBox зависает в IExlorer


Автор: ekianu 25.3.2010, 22:24
Привет всем!!!
Пишу ActiveX для IE. Показываю стандартный API диалог, а он зависает вместе с IE.

Код

TMyObject = class(TAutoObject, IObjectSafety, IObjectWithSite, IMyObject)
private
  Parent: HWND;
protected
  function SetSite(const pUnkSite: IUnknown ):HResult; stdcall;
  function GetSite(const riid: TIID; out site: IUnknown):HResult; stdcall;
  function ShowDlg: Boolean;
end;
...
function TMyObject.GetSite(const riid: TIID; out site: IUnknown):HResult; stdcall;
begin
  Result:=S_Ok;
end;

function TMyObject.SetSite(const pUnkSite: IUnknown ):HResult; stdcall;
var OleWindow:IOleWindow;
begin
  Result:=S_Ok;
  Parent:=0;
  if pUnkSite=nil then Exit;
  OleWindow:=pUnkSite as IOleWindow;
  if not Succeeded(OleWindow.GetWindow(Parent)) then Result:=E_FAIL;
  OleWindow:=nil;
  if Parent=0 then
  begin
    Result:=E_FAIL;
    Exit;
  end;
end;

function MyDlgProc(hDlg: HWND; Msg, WParam, LParam: Integer): Integer; StdCall;
begin
  Result := 0;
  Case Msg of
   WM_COMMAND: begin
    if (LoWord(WParam) = IDCANCEL) then EndDialog(hDlg, IDCANCEL);
   end;
  end;
  Result := 0;
end;

function TMyObject.ShowDlg: Boolean;
begin
  Result := DialogBox(hInstance, 'IDD_MYDLG', Parent, @MyDlgProc)=IDOK;
end;


вместо DialogBox использовал GetOpenFileName (стандартное API диалог открытия файла) все равно зависает.

Помогите пожалуйста. Заранее спасибо.

Автор: ekianu 29.3.2010, 20:14
 Может кто нибудь по другому сделал, плз.

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)