专栏首页包子的书架MFC的自定义控件步骤

MFC的自定义控件步骤

MFC的自定义控件

开发环境

vs2015

步骤:

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

工具栏.png

  • 创建自定义控件类 在Custom Control上右键点击 -->ClassWizard-->ClassWizard-->Add Class-->类名CMyControl(以C开头)-->Base class:CWnd。

类向导.png

创建控件类.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不能和其他的重复

控件属性.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);
 }

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

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • unity Android 交互的常见问题总结

    1、unity2017版本,采用aar打包:出现A library uses the same package as this project:的错误 原因:...

    包子388321
  • MFC 调用静态链接 MFC 的规则 DLL

    最近学习了生成静态链接的dll及其调用,写一下笔录和大家分享,有错误的地方欢迎大家指出来

    包子388321
  • AppBarLayout和CollapsingToolbarLayout的闲谈

    自从google的design出来之后,很多控件效果实现起来已经不需要再像以前那样写自定义控件了,最近有个需求是要到页面头部标题栏的折叠效果,因此,想想用Col...

    包子388321
  • .NET 页面生命周期

    1. Start 在这个阶段,页面属性,比如Request, Response, IsPostBack和UICulture 被创建。最为一个开发人员,大部分时...

    Isaac Zhang
  • 自定义View学习——三种实现方式

         自定义View学习,也看了一段时间了,想着总结一下知识点,帮助自己理解和巩固知识。

    紫兮木溪
  • 太实用了!自己动手写软件——GUI编程

    这几天我有一个想法就是将我之前做测试写的一些协议脚本(如:ssh、FTP、SMTP、MySQL、Oracle等)综合在一起做一个密码破解器,这么多的协议放在一起...

    菜鸟小白的学习分享
  • vc中实现控件的隐藏与显示

    一、隐藏控件             CWnd *pWnd;         pWnd = GetDlgItem(IDC_EDIT1);        //获...

    _gongluck
  • QuickPager asp.net 分页控件、表单控件等自定义控件下载 和介绍 【2009.09.07更新】

    最新下载地址: 自然框架的源代码、Demo、数据库、配置信息管理程序下载(2010.01.25更新) QuickControl web控件集包含的控件 Qu...

    用户1174620
  • 微信小程序开发实战(18):地图组件

    在小程序中可以使用<map>标签嵌入地图,那么可能很多同学会问,<map>嵌入的是哪家的地图呢?这还用问,自然是腾讯的地图了,而且不能换成其他的地图(百度、高德...

    蒙娜丽宁
  • 安卓app最贴地气靠谱的UI自动化工具

    1.入门门槛低,只要有懂基础的获取元素及简单的if,else逻辑关系就可,纯json格式脚本输出;

    厦门-安仔

扫码关注云+社区

领取腾讯云代金券