MFC的自定义控件步骤

MFC的自定义控件

开发环境

vs2015

步骤:

  • 新建一个MFC 工程
  • 在窗口中添加一个自定义控件
    Toolbox-->“Custom Control”-->属性-->class随便填写一个控件类名“CMyControl”, 这个名字用于以后注册控件用的,注册函数为RegisterWindowClass()。
    MFC的自定义控件步骤_第1张图片
    工具栏.png
  • 创建自定义控件类

    在Custom Control上右键点击 -->ClassWizard-->ClassWizard-->Add Class-->类名CMyControl(以C开头)-->Base class:CWnd。
    MFC的自定义控件步骤_第2张图片
    类向导.png

    MFC的自定义控件步骤_第3张图片
    创建控件类.png
  • 注册自定义控件CMyControl
 BOOL CMyControl::RegisterWindowClass(HINSTANCE hInstance)
 {
   LPCWSTR className = L"CMyControl";//"CMyControl"控件类的名字   
   WNDCLASS windowclass;
   if (hInstance)
      hInstance = AfxGetInstanceHandle();
   if (!(::GetClassInfo(hInstance, className, &windowclass)))
   {
      windowclass.style = CS_DBLCLKS;
      windowclass.lpfnWndProc = ::DefWindowProc;
      windowclass.cbClsExtra = windowclass.cbWndExtra = 0;
      windowclass.hInstance = hInstance;
      windowclass.hIcon = NULL;
      windowclass.hCursor = AfxGetApp()->LoadStandardCursor(IDC_ARROW);
      windowclass.hbrBackground = ::GetSysColorBrush(COLOR_WINDOW);
      windowclass.lpszMenuName = NULL;
      windowclass.lpszClassName = className;
   }
   return AfxRegisterClass(&windowclass);
  }
  • 在构造函数调用RegisterWindowClass()
  CMyControl::CMyControl()
  {
    RegisterWindowClass();
  }
  • 在控件属性中填写当前自定控件的类名
    注意控件的ID不能和其他的重复


    MFC的自定义控件步骤_第4张图片
    控件属性.png
  • 控件与对话框数据交换
    在CMyTestDlg.h中定义一个变量:
    CMyControl m_control;
    在对话框类的CMyTestDlg.cpp的DoDataExchange函数中添加
    DDX_Control(pDX,IDC_CUSTOM1,m_control)。
 void CMyTestDlg::DoDataExchange(CDataExchange* pDX)
 {
    CDialogEx::DoDataExchange(pDX);
    DDX_Control(pDX, IDC_CUSTOM1, m_control);
 }

以上步骤就完成了一个简单的自定控件

你可能感兴趣的:(MFC的自定义控件步骤)