首页 > 编程 > C++ > 正文

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

2020-01-26 15:04:42
字体:
来源:转载
供稿:网友

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

以上所述就是本文的全部内容了,希望大家能够喜欢。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表