全國最多中醫師線上諮詢網站-台灣中醫網
發文 回覆 瀏覽次數:5570
推到 Plurk!
推到 Facebook!

编程时遇上could not obtain ole control window handle

 
maner
一般會員


發表:1
回覆:0
積分:0
註冊:2003-07-21

發送簡訊給我
#1 引用回覆 回覆 發表時間:2003-07-21 16:11:28 IP:218.20.xxx.xxx 未訂閱
如果在一个非弹出的IE里面打开是正常的,但试图在弹出的浏览器(用window.open打开的窗体内)的ocx控件里面动态创建imgedit 请问could not obtain ole control window handle是怎么一回事? 我应该如何解决这个问题?谢谢! 源程序如下: unit mytestocxImpl1; {$WARN SYMBOL_PLATFORM OFF} interface uses Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs, ActiveX, AxCtrls, mytestocxProj1_TLB, StdVcl, StdCtrls, OleCtrls, DBOleCtl, ImgeditLibCtl_TLB, SHDocVw,ComObj, ComServ; type Tmytestocx = class(TActiveForm, Imytestocx) Button1: TButton; Button2: TButton; procedure Button1Click(Sender: TObject); procedure Button2Click(Sender: TObject); private { Private declarations } FEvents: ImytestocxEvents; procedure ActivateEvent(Sender: TObject); procedure ClickEvent(Sender: TObject); procedure CreateEvent(Sender: TObject); procedure DblClickEvent(Sender: TObject); procedure DeactivateEvent(Sender: TObject); procedure DestroyEvent(Sender: TObject); procedure KeyPressEvent(Sender: TObject; var Key: Char); procedure PaintEvent(Sender: TObject); protected { Protected declarations } procedure DefinePropertyPages(DefinePropertyPage: TDefinePropertyPage); override; procedure EventSinkChanged(const EventSink: IUnknown); override; function Get_Active: WordBool; safecall; function Get_AlignDisabled: WordBool; safecall; function Get_AutoScroll: WordBool; safecall; function Get_AutoSize: WordBool; safecall; function Get_AxBorderStyle: TxActiveFormBorderStyle; safecall; function Get_Caption: WideString; safecall; function Get_Color: OLE_COLOR; safecall; function Get_Cursor: Smallint; safecall; function Get_DoubleBuffered: WordBool; safecall; function Get_DropTarget: WordBool; safecall; function Get_Enabled: WordBool; safecall; function Get_Font: IFontDisp; safecall; function Get_HelpFile: WideString; safecall; function Get_HelpKeyword: WideString; safecall; function Get_HelpType: TxHelpType; safecall; function Get_KeyPreview: WordBool; safecall; function Get_PixelsPerInch: Integer; safecall; function Get_PrintScale: TxPrintScale; safecall; function Get_Scaled: WordBool; safecall; function Get_Visible: WordBool; safecall; function Get_VisibleDockClientCount: Integer; safecall; procedure _Set_Font(var Value: IFontDisp); safecall; procedure Set_AutoScroll(Value: WordBool); safecall; procedure Set_AutoSize(Value: WordBool); safecall; procedure Set_AxBorderStyle(Value: TxActiveFormBorderStyle); safecall; procedure Set_Caption(const Value: WideString); safecall; procedure Set_Color(Value: OLE_COLOR); safecall; procedure Set_Cursor(Value: Smallint); safecall; procedure Set_DoubleBuffered(Value: WordBool); safecall; procedure Set_DropTarget(Value: WordBool); safecall; procedure Set_Enabled(Value: WordBool); safecall; procedure Set_Font(const Value: IFontDisp); safecall; procedure Set_HelpFile(const Value: WideString); safecall; procedure Set_HelpKeyword(const Value: WideString); safecall; procedure Set_HelpType(Value: TxHelpType); safecall; procedure Set_KeyPreview(Value: WordBool); safecall; procedure Set_PixelsPerInch(Value: Integer); safecall; procedure Set_PrintScale(Value: TxPrintScale); safecall; procedure Set_Scaled(Value: WordBool); safecall; procedure Set_Visible(Value: WordBool); safecall; public { Public declarations } procedure Initialize; override; end; implementation uses shellApi; {$R *.DFM} { Tmytestocx } procedure Tmytestocx.DefinePropertyPages(DefinePropertyPage: TDefinePropertyPage); begin { Define property pages here. Property pages are defined by calling DefinePropertyPage with the class id of the page. For example, DefinePropertyPage(Class_mytestocxPage); } end; procedure Tmytestocx.EventSinkChanged(const EventSink: IUnknown); begin FEvents := EventSink as ImytestocxEvents; inherited EventSinkChanged(EventSink); end; procedure Tmytestocx.Initialize; begin inherited Initialize; OnActivate := ActivateEvent; OnClick := ClickEvent; OnCreate := CreateEvent; OnDblClick := DblClickEvent; OnDeactivate := DeactivateEvent; OnDestroy := DestroyEvent; OnKeyPress := KeyPressEvent; OnPaint := PaintEvent; end; function Tmytestocx.Get_Active: WordBool; begin Result := Active; end; function Tmytestocx.Get_AlignDisabled: WordBool; begin Result := AlignDisabled; end; function Tmytestocx.Get_AutoScroll: WordBool; begin Result := AutoScroll; end; function Tmytestocx.Get_AutoSize: WordBool; begin Result := AutoSize; end; function Tmytestocx.Get_AxBorderStyle: TxActiveFormBorderStyle; begin Result := Ord(AxBorderStyle); end; function Tmytestocx.Get_Caption: WideString; begin Result := WideString(Caption); end; function Tmytestocx.Get_Color: OLE_COLOR; begin Result := OLE_COLOR(Color); end; function Tmytestocx.Get_Cursor: Smallint; begin Result := Smallint(Cursor); end; function Tmytestocx.Get_DoubleBuffered: WordBool; begin Result := DoubleBuffered; end; function Tmytestocx.Get_DropTarget: WordBool; begin Result := DropTarget; end; function Tmytestocx.Get_Enabled: WordBool; begin Result := Enabled; end; function Tmytestocx.Get_Font: IFontDisp; begin GetOleFont(Font, Result); end; function Tmytestocx.Get_HelpFile: WideString; begin Result := WideString(HelpFile); end; function Tmytestocx.Get_HelpKeyword: WideString; begin Result := WideString(HelpKeyword); end; function Tmytestocx.Get_HelpType: TxHelpType; begin Result := Ord(HelpType); end; function Tmytestocx.Get_KeyPreview: WordBool; begin Result := KeyPreview; end; function Tmytestocx.Get_PixelsPerInch: Integer; begin Result := PixelsPerInch; end; function Tmytestocx.Get_PrintScale: TxPrintScale; begin Result := Ord(PrintScale); end; function Tmytestocx.Get_Scaled: WordBool; begin Result := Scaled; end; function Tmytestocx.Get_Visible: WordBool; begin Result := Visible; end; function Tmytestocx.Get_VisibleDockClientCount: Integer; begin Result := VisibleDockClientCount; end; procedure Tmytestocx._Set_Font(var Value: IFontDisp); begin SetOleFont(Font, Value); end; procedure Tmytestocx.ActivateEvent(Sender: TObject); begin if FEvents <> nil then FEvents.OnActivate; end; procedure Tmytestocx.ClickEvent(Sender: TObject); begin if FEvents <> nil then FEvents.OnClick; end; procedure Tmytestocx.CreateEvent(Sender: TObject); begin if FEvents <> nil then FEvents.OnCreate; end; procedure Tmytestocx.DblClickEvent(Sender: TObject); begin if FEvents <> nil then FEvents.OnDblClick; end; procedure Tmytestocx.DeactivateEvent(Sender: TObject); begin if FEvents <> nil then FEvents.OnDeactivate; end; procedure Tmytestocx.DestroyEvent(Sender: TObject); begin if FEvents <> nil then FEvents.OnDestroy; end; procedure Tmytestocx.KeyPressEvent(Sender: TObject; var Key: Char); var TempKey: Smallint; begin TempKey := Smallint(Key); if FEvents <> nil then FEvents.OnKeyPress(TempKey); Key := Char(TempKey); end; procedure Tmytestocx.PaintEvent(Sender: TObject); begin if FEvents <> nil then FEvents.OnPaint; end; procedure Tmytestocx.Set_AutoScroll(Value: WordBool); begin AutoScroll := Value; end; procedure Tmytestocx.Set_AutoSize(Value: WordBool); begin AutoSize := Value; end; procedure Tmytestocx.Set_AxBorderStyle(Value: TxActiveFormBorderStyle); begin AxBorderStyle := TActiveFormBorderStyle(Value); end; procedure Tmytestocx.Set_Caption(const Value: WideString); begin Caption := TCaption(Value); end; procedure Tmytestocx.Set_Color(Value: OLE_COLOR); begin Color := TColor(Value); end; procedure Tmytestocx.Set_Cursor(Value: Smallint); begin Cursor := TCursor(Value); end; procedure Tmytestocx.Set_DoubleBuffered(Value: WordBool); begin DoubleBuffered := Value; end; procedure Tmytestocx.Set_DropTarget(Value: WordBool); begin DropTarget := Value; end; procedure Tmytestocx.Set_Enabled(Value: WordBool); begin Enabled := Value; end; procedure Tmytestocx.Set_Font(const Value: IFontDisp); begin SetOleFont(Font, Value); end; procedure Tmytestocx.Set_HelpFile(const Value: WideString); begin HelpFile := String(Value); end; procedure Tmytestocx.Set_HelpKeyword(const Value: WideString); begin HelpKeyword := String(Value); end; procedure Tmytestocx.Set_HelpType(Value: TxHelpType); begin HelpType := THelpType(Value); end; procedure Tmytestocx.Set_KeyPreview(Value: WordBool); begin KeyPreview := Value; end; procedure Tmytestocx.Set_PixelsPerInch(Value: Integer); begin PixelsPerInch := Value; end; procedure Tmytestocx.Set_PrintScale(Value: TxPrintScale); begin PrintScale := TPrintScale(Value); end; procedure Tmytestocx.Set_Scaled(Value: WordBool); begin Scaled := Value; end; procedure Tmytestocx.Set_Visible(Value: WordBool); begin Visible := Value; end; procedure Tmytestocx.Button1Click(Sender: TObject); var img1:timgedit; begin img1:=timgedit.Create(self); img1.Parent:=self; img1.width:=self.width; img1.Height:=self.height; end; procedure Tmytestocx.Button2Click(Sender: TObject); begin //ShellExecute(Handle, 'open', PChar('c:\1.gif'),nil, nil, SW_SHOW); end; initialization TActiveFormFactory.Create( ComServer, TActiveFormControl, Tmytestocx, Class_mytestocx, 1, '', OLEMISC_SIMPLEFRAME or OLEMISC_ACTSLIKELABEL, tmApartment); end.
系統時間:2024-05-04 0:06:17
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!