码迷,mamicode.com
首页 > 编程语言 > 详细

VC++ 自定义控件的建立及使用方法

时间:2015-06-14 18:29:31      阅读:141      评论:0      收藏:0      [点我收藏+]

标签:

一、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++自定义控件就全部介绍完毕,你可以在类型中加入你要实现的方法。

VC++ 自定义控件的建立及使用方法

标签:

原文地址:http://www.cnblogs.com/lujin49/p/4575410.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!