zoukankan      html  css  js  c++  java
  • VC++ 自定义控件的建立及使用方法

    一、VC++定义自定义控件与delphi,VB有些差异。

    delphi,vb在 file-new-other中建立。vc++在工具栏中就有自定义控件,但必须加入控件类型

    许多书籍都在类向导中建立。我这里介绍的是手动建立,其结果是一样的。
    二.建立过自定义控件类型:
       2.1、把工具栏上的自定义控件放入对话框中
       2.2、建立Mycontrol.h, Mycontrol.cpp文件
       2.3、Mycontrol.h中的定义是

    #ifndef __MYCTROLTRL_H__
        #define __MYCTROLTRL_H__
        #define MYWNDCLASS "mycontrol"
        #include <afxtempl.h>
        class CMycontrol: public CWnd
        {
         private:
         public:
         static BOOL RegisterWndClass();
         CMycontrol();
         void customfun();//一个自定义方法
         };
       #endif

        2.4 Mycontrol.cpp中的实现部分
     
    #include "StdAfx.h"
       #include "mycontrol.h"
       CMycontrol::CMycontrol()
        {
     CMycontrol::RegisterWndClass();
        }
        //注册控件RegisterWndClass格式是固定的不要记忆没有那个必要直接拷贝粘贴就可以。 
       CMycontrol::RegisterWndClass()
       {
       WNDCLASS windowclass;
        HINSTANCE hInst = AfxGetInstanceHandle();
        //Check weather the class is registerd already
        if (!(::GetClassInfo(hInst, MYWNDCLASS, &windowclass)))
        {
            //If not then we have to register the new class
            windowclass.style = CS_DBLCLKS;// | CS_HREDRAW | CS_VREDRAW;
            windowclass.lpfnWndProc = ::DefWindowProc;
            windowclass.cbClsExtra = windowclass.cbWndExtra = 0;
            windowclass.hInstance = hInst;
            windowclass.hIcon = NULL;
            windowclass.hCursor = AfxGetApp()->LoadStandardCursor(IDC_ARROW);
            windowclass.hbrBackground = ::GetSysColorBrush(COLOR_WINDOW);
            windowclass.lpszMenuName = NULL;
            windowclass.lpszClassName = MYWNDCLASS;
            if (!AfxRegisterClass(&windowclass))
            {
                AfxThrowResourceException();
                return FALSE;
            }
        } 
        return TRUE;
      }
     //自定义方法
      void CMycontrol::customfun()
      {
      AfxMessageBox(_T("my control!"));
     }

    三、使用自定义控件
        3.1.在类向导中绑定自定义控件时你是找不到刚才你定义的类型的,所以我采用手动加入代码方法。
        3.2.在对话框.h文件中手动加入:public: CMycontrol m_mycontrol;
        3.3.在对话框.cpp文件中手动加入:DDX_Control(pDX,IDC_CUSTOM1,m_mycontrol);
        3.4.在对话框中加入Button 在点击事件中加入测试代码:

    void CCustomcontrolDlg::OnButton1()
        {
     // TODO: Add your control notification handler code here
          m_mycontrol.customfun(); 
      }

    四、编译运行vc++自定义控件的对话框窗体.编译成功但运行什么也不显示的解决

    右键自定义控件->属性->类型中填写"mycontrol"再次允许OK!

    到此VC++自定义控件就全部介绍完毕,你可以在类型中加入你要实现的方法。

  • 相关阅读:
    当用户登录,经常会有实时的下拉框,例如,输入邮箱,将会@qq.com,@163.com,@sohu.com
    《SAS编程和数据挖掘商业案例》学习笔记# 19
    CareerCup它1.8 串移包括问题
    ERDAS遥感图像配准、及其它一些基本处理
    ENVI裁剪
    【转】Points To Line
    【转】Python IDE for Eclipse
    [转] Download Images from Multiple Maps
    Matlab splinetx
    jquery 元素控制(附加元素/其他内容)引进和应用
  • 原文地址:https://www.cnblogs.com/lujin49/p/4575410.html
Copyright © 2011-2022 走看看