ActiveX开发

控件调试方法

控件编译生成的是OCX文件,无法进行单步Debug调试。OCX需要运行环境,VS自带的plant调试环境不好使用,而且不好传递参数。或者说我不会用,这个方面介绍的资料十分少。我的调试方法如下:

1.  创建一个.html文件,在该文件中引用这个OCX,需要知道CLASSID,可以在.html文件中传入给OCX的参数

2.  利用regsvr32命令 安装和卸载 OCX,每次编译生成新的OCX都需要进行新的安装,然后利用IE打开上面生成的.html文件就可以运行OCX了。

Regsvr32  xx.ocx    安装控件

Regsvre32 –u xx.ocx 卸载控件

 

从页面向控件中传递参数

下面以类CUpFileActiveXCtrl进行说明,应为该类是进行参数传递的关键

功能描述:

       负责从控件嵌入页面得到参数,然后将参数传递给控件主操作界面一个Dialog对话框。

属性描述:

       CUpLoadDialog           m_uploadDialog            绘制主操作界面

       CString          m_upIp          上传IP

       CString          m_upPage      上传页面

       CString          m_upFileNameUseByForm   上传Formfile变量名

       CString          m_upParamName          上传变量名

       CString          m_upParamValue          上传变量值

       LONG            m_sigFileSize               单个文件到小

       LONG            m_tolFileSize               总文件大小

       SHORT          m_tolFileNum                     总文件个数

方法描述:

       DoPropExchange(CPropExchange* pPX)    完成从嵌入页面得到数据写入上面的属   

       OnCreate()     完成给m_uploadDialog设置属性值,显示m_uploadDialog对话框。

       OnDraw()      调用m_uploadDialog的重绘方法完成窗口绘制。

 

1.  UpFileActiveX.idl文件中增加

[ uuid(318F3BB1-EF8B-4D4D-82CF-F5458EDE9F0A),

  helpstring("UpFileActiveX Control 的调度接口")]

dispinterface _DUpFileActiveX

{

properties:

[id(24) , helpstring("属性strCurUpFolder")] BSTR strCurUpFolder;      //增加的页面属性

methods:

};

2.  UpFileActiveXCtrl.h中增加2

a)         调度和事件ID

// 调度和事件ID

public:

enum {

     dispidstrCurUpFolder = 24,

}

b)        增加类变量和方法

void OnstrCurUpFolderChanged(void);

CString m_strCurUpFolder;

3.  UpFileActiveXCtrl.CPP文件的修改

a)         实现增加的方法

//无需具体的实现,保留空方法就行

void CUpFileActiveXCtrl::OnstrCurUpFolderChanged(void)

{

   AFX_MANAGE_STATE(AfxGetStaticModuleState());

 

   // TODO: 在此添加属性处理程序代码

 

   SetModifiedFlag();

}

b)        添加调度映射

BEGIN_DISPATCH_MAP(CUpFileActiveXCtrl, COleControl)

DISP_PROPERTY_NOTIFY_ID(CUpFileActiveXCtrl, "strCurUpFolder", dispidstrCurUpFolder, m_strCurUpFolder, OnstrCurUpFolderChanged, VT_BSTR)

END_DISPATCH_MAP()

 

c)         修改DoPropExchange函数

void CUpFileActiveXCtrl::DoPropExchange(CPropExchange* pPX){

     PX_String(pPX,_T("strCurUpFolder"),m_strCurUpFolder);            //增加这一行

}

d)        修改Dialog的创建函数

找到需要显示的Dialog创建函数,给Dialog中对应的属性设置值。

m_upfileDialog.SetCurUpFolder( this->m_strCurUpFolder );

 

 

你可能感兴趣的:(properties,String,IE,File,dialog,methods)