• VC6.0开发OCX按钮控件


    VC6.0开发OCX按钮控件
    0 前言

    1、OCX是典型的ActiveX控件,常见的OCX控件有很多,IE浏览器、Word、Excel等都提供各种各样的OCX控件。
    2、OCX控件的优点是可以在其他应用程序中嵌入使用。OCX控件做为插件、外挂式的应用非常灵活方便。
    3、一般用的比较多的是做为视频、图片、图表等显示区域控件。最近碰到几个按钮的功能要封装成OCX控件,供其它程序使用。网上大概搜索了下,资料不多,于是自己写了下来,以供查找。

    1 创建OCX项目

    1、打开VC6.0,创建MFC ActiveX项目,工程名称:OcxDemo。

    2、按照向导步骤操作,点击“完成”创建项目成功。

    3、在OcxDemoCtrl.h文件中定义“增加”按钮。

    //按钮IDC
    #define IDC_BUTTON_ADD  0x2001    //"增加"按钮
    private:
        //"增加"按钮
        CButton m_BtnAdd;

    4、增加自绘“增加”按钮方法。

    5、在OcxDemoCtrl.cpp新生成的CreateBtnAdd方法中添加创建按钮相关代码。

    m_BtnAdd.Create(_T("Add"), WS_CHILD|WS_VISIBLE|BS_PUSHBUTTON, CRect(10,10,60,30), this, IDC_BUTTON_ADD);

    6、对“增加”按钮,增加响应事件。

    //OcxDemoCtrl.h
    private:
        //"增加"按钮
        CButton m_BtnAdd;
        //"增加"按钮单击响应
        void OnButtonAdd();
    //OcxDemoCtrl.cpp
    BEGIN_MESSAGE_MAP(CActiveXDemoCtrl, COleControl)
        //{{AFX_MSG_MAP(CActiveXDemoCtrl)
        // NOTE - ClassWizard will add and remove message map entries
        //    DO NOT EDIT what you see in these blocks of generated code !
        ON_BN_CLICKED(IDC_BUTTON_ADD, OnButtonAdd)
        //}}AFX_MSG_MAP
        ON_OLEVERB(AFX_IDS_VERB_PROPERTIES, OnProperties)
    END_MESSAGE_MAP()
    
    void COcxDemoCtrl::OnButtonAdd()
    {
        MessageBox("增加");
    }

    7、删除OnDraw中代码。

    //pdc->FillRect(rcBounds, CBrush::FromHandle((HBRUSH)GetStockObject(WHITE_BRUSH)));
    //pdc->Ellipse(rcBounds);

    8、编译生成OcxDemo.ocx。 

    9、源码:OcxDemo.rar

    2 测试OcxDemo.ocx

    1、打开ActiveX Control Test Container工具,插入OcxDemo.ocx。

    2、Invoke:CreateBtnAdd方法。

    3、测试CreateBtnAdd方法,成功。

    3 VC6调用OCX控件

    1、打开VC6.0,创建MFC AppWizard[exe]对话框项目,工程名称:OcxTestDemo。

    2、插入OcxTestDemo.ocx到控件面板。

    3、对控件添加关联成员变量:m_OcxDemoCtrl。

    4、BOOL COcxTestDemoDlg::OnInitDialog()添加自绘“增加”按钮方法。

    m_OcxDemoCtrl.CreateBtnAdd();

    5、编译生成OcxTestDemo.exe,查看调用OcxDemo.oxc效果。

     

     6、源码:OcxTestDemo.rar

    版权声明: 本博客地址 http://www.cnblogs.com/joinclear,欢迎转载,转载请标明原文作者和链接。

    文章说明: 一家之辞难免有误,欢迎您中肯的指正;如对您有帮助,不胜荣幸,但更希望能够抛砖引玉。

    - joinclear     

  • 相关阅读:
    数组(Array)
    js数据类型自动转化规律
    ES6-12.Symbol
    彻底搞懂prototype和__proto__
    API测试利器——Postman(1. 安装和启动)
    全国各城市的代码邮编sql(mysql版)
    SQL执行的顺序
    jQuery $.each用法
    使用maven工具对maven项目进行打包所出现的问题
    关于Notepad++中用正则表达式匹配中文的问题
  • 原文地址:https://www.cnblogs.com/joinclear/p/3091934.html
Copyright © 2020-2023  润新知