您的位置:首页 > 其它

mfc之ocx控件制作

2015-02-03 14:49 281 查看


一、控件有属性,事件和方法。mfc把它封装了两个接口。

       属性,是对外公布的类成员变量,添加属性可以很方便使用者,如js,php,swf等网页或其他对控件外观或值进行方便的修改。让

ocx控件使用起来就像一个常用如按钮控件一般。

      方法,也是对外公布的,这些方法能被外部如js,asp等多种语言调用,内部用c++实现,很好让c++和其他语言配合使用。

      事件,是ocx控件的响应事件,比如单击,双击事件其实和其他的如按钮控件查不多啦

      其实,ocx控件就和其他控件差不多,只是ocx控件是基于ATL组件实现的,用的时候需要注册。

二、控件的详细制作就不说了,建立控件工程,右击两个接口就可以添加属性事件和方法了。

三、控件的注册、卸载

        1.运行 regsvr32 ocx控件全路径名 卸载 regsvr32 -u ocx控件全路径名

        2.写成bat批出里   regsvr32 %~dp0控件名.ocx

                                        regsvr32 -u %~dp0控件名.ocx

四、获取控件的注册路径

       1.简单的方法:在app类InitInstance里面增加代码处加上以下代码:

           g_szOcxName = this->m_pszExeName;    //获取控件名

           g_szOcxName += ".HLP";                              //得到 控件名.HLP

           int nTmp = g_szOcxName.GetLength();     //得到 控件帮助文件路径形如: c:\ocx\Form.HLP

           nTmp = g_szOcxPath.GetLength() - nTmp; 

           g_szOcxPath = g_szOcxPath.Left(nTmp);   //得到 控件路径 如: c:\ocx\

        2:还可以通过方法动态获取

           HMODULE hh = NULL;

           hh = ::GetModuleHandle("控件名.ocx");  //获取控件句柄

           char buff[200]={0};

           CString strPath = ::GetModuleFileName(hh,buff,200);  //获取控件全路径名

           int iPos = strPath.AnsiPos("控件名.ocx");

           if(iPos>0) iPos = iPos -1;

           strPath = strPath.SubString(0,iPos);       //去掉 控件名.ocx 或的注册路径
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: