MFC应用程序(控件集合)——标签控件_IP控件_时间控件_List Control控件_Tree Control控件_命令按钮_列表框_组合框_图片_滚动控件

本文主要是介绍MFC应用程序(控件集合)——标签控件_IP控件_时间控件_List Control控件_Tree Control控件_命令按钮_列表框_组合框_图片_滚动控件,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

文章目录

    • 标签控件应用
    • IP控件应用
    • 时间控件应用
    • List Control控件
    • Tree Control控件
    • 【按钮控件简介】
    • 【列表框控件介绍】
    • 【组合框控件介绍】
    • 【图片控件控件简介】
    • 【滚动条控件简介】
        • 以下是项目效果图:
    • 基本准备:
      • 需要添加以下对话框及相应类
    • 代码及详解部分

标签控件应用

【Tab Control 标签控件】 标签控件也比较常见。它可以把多个页面集成到一个窗口中, 每个页面对应一个标签,用户点击某个标签时,它对应的页 面就会显示。 使用标签控件我们可以同时加载多个有关联的页面,用 户只需点击标签即可实现页面切换,方便灵活的进行操作。 每个标签除了可以显示标签文本,还可以显示图标。 标签控件相当于是一个页面的容器,可以容纳多个对话 框,而且一般也只容纳对话框,所以我们不能直接在标签控 件上添加其他控件,必须先将其他控件放到对话框中,再将 对话框添加到标签控件中。最终我们点击标签切换页面时, 切换的不是控件的组合,而是对话框。

IP控件应用

【IP Address Control控件】 IP Address Control This section contains information about the programming elements used with IP address controls.
参考数据:
[https://docs.microsoft.com/zh- cn/windows/win32/controls/ip-address- control-reference]

时间控件应用

【时间标准控件】 Date and Time Picker This section contains information about the API elements used with date and time picker controls.
参考数据:

[https://docs.microsoft.com/zh- cn/windows/win32/controls/date-and-time- picker-control-reference]

List Control控件

列表视图控件List Control同样比较常见,它能够把 任何字符串内容以列表的方式显示出来,这种显示方式 的特点是整洁、直观,在实际应用中能为用户带来方便。 列表视图控件是对前面讲到的列表框控件List Box 的改进和延伸。列表视图控件的列表项一般有图标 (Icon)和标签(Label)两部分。图标是对列表项的 图形描述,标签是文字描述。当然列表项可以只包含图 标也可以只包含标签

Tree Control控件

树形控件在Windows系统中是很常见的,例如资源 管理器左侧的窗口中就有用来显示目录的树形视图。树 形视图中以分层结构显示数据,每层的缩进不同,层次 越低缩进越多。树形控件的节点一般都由标签和图标两 部分组成,图标用来抽象的描述数据,能够使树形控件 的层次关系更加清晰。 树形控件在插入新的树节点时会稍麻烦些,回顾之 前的列表框,插入新列表项时调用AddString成员函数 就可以了,而对于树形控件则需要指定新节点与已有节 点的关系。另外,树形控件与列表视图控件一样,可以 在每一个节点的左边加入图标。这些都使得树形控件给 人一种复杂的感觉,但我们在使用它一两次后会发现其 实树形控件用起来还是很方便的。

【按钮控件简介】

按钮控件包括命令按钮(Button)、单选按钮(Radio Button)和复选 框(Check Box)等。命令按钮就是我们前面多次提到的狭义的按钮控件, 用来响应用户的鼠标单击操作,进行相应的处理,它可以显示文本也可以嵌 入位图。单选按钮使用时,一般是多个组成一组,组中每个单选按钮的选中 状态具有互斥关系,即同组的单选按钮只能有一个被选中。 1、命令按钮是最常用的一种按钮控件 2、单选按钮和复选框都是一种比较特殊的按钮控件。单选按钮有选中和未选 中两种状态,为选中状态时单选按钮中心会出现一个蓝点,以标识选中状态。 3、复选框也是有选中和未选中两种状态,选中时复选框内会增加一个“√”, 而三态复选框(设置了BS_3STATE风格)有选中、未选中和不确定三种状态, 不确定状态时复选框内出现一个灰色“√”。

【列表框控件介绍】

列表框给出了一个选项清单,允许用户从中进行单项或多项选择,被选中的项 会高亮显示。列表框可分为单选列表框和多选列表框,顾名思义,单选列表框中一 次只能选择一个列表项,而多选列表框可以同时选择多个列表项。 列表框也会向父窗口发送通知消息。这些通知消息含义如下: LBN_DBLCLK:用户用鼠标双击了一列表项,只有具有LBS_NOTIFY的列表才 能发送该消息。 LBN_ERRSPACE:列表框不能申请足够的动态内存来满足需要。 LBN_KILLFOCUS:列表框失去焦点。 LBN_SELCANCEL:当前的选择被取消,只有具有LBS_NOTIFY的列表框才能 发送该消息。 LBN_SETFOCUS:列表框获得输入焦点。 WM_CHARTOITEM:当列表框收到WM_CHAR消息后,向父窗口发送该消息, 只有具有LBS_WANTKEYBOARDINPUT风格的列表框才会发送该消息。 WM_VKEYTOITEM:当列表框收到WM_KEYDOWN消息后,向父窗口发送该 消息,只有具有LBS_WANTKEYBOARDINPUT风格的列表框才会发送该消息。

【组合框控件介绍】

组合框其实就是把一个编辑框和一个列表框组合到 了一起,分为三种:简易(Simple)组合框、下拉式 (Dropdown)组合框和下拉列表式(Drop List)组合框。 下面讲讲它们的区别。

【图片控件控件简介】

图片控件和前面讲到的静态文本框都是静态文本控件, 两者的使用方法有很多相同之处,所属类都是CStatic类。 图片控件静态和动态加载位图图片

【滚动条控件简介】

滚动条大家也很熟悉了,Windows窗口中很多都有滚动条。 前面讲的列表框和组合框设置了相应属性后,如果列表项显 示不下也会出现滚动条。滚动条分为水平滚动条(Horizontal Scroll Bar)和垂直滚动条(Vertical Scroll Bar)两种。滚动条 中有一个滚动块,用于标识滚动条当前滚动的位置。我们可 以拖动滚动条,也可以用鼠标点击滚动条某一位置使滚动块 移动。从滚动条的创建形式来分,有标准滚动条和滚动条控件 两种。像列表框和组合框设置了WS_HSCROLL或 WS_VSCROLL风格以后出现的滚动条,不是一个独立的窗 口,而是这些窗口的一部分,这就是标准滚动条。而滚动条 空间是一个独立的窗口,它可以获得焦点,响应某些操作。

以下是项目效果图:

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

基本准备:

需要添加以下对话框及相应类

在这里插入图片描述

在这里插入图片描述
并将子窗口属性改为child 边框改为false,建立一个tab控件 其余控件自己可另行设计

代码及详解部分

首先为每个子窗口创建对象

Dlg头文件代码如下:


// MFCApplication1Dlg.h: 头文件
//#pragma once
#include"CComputerName.h"
#include"CIDName.h"
#include"CSYSTime.h"
#include"C16TH.h"
#include"C17TH.h"
#include"resource.h"// CMFCApplication1Dlg 对话框
class CMFCApplication1Dlg : public CDialogEx
{
// 构造
public:CMFCApplication1Dlg(CWnd* pParent = nullptr);	// 标准构造函数// 对话框数据
#ifdef AFX_DESIGN_TIMEenum { IDD = IDD_MFCAPPLICATION1_DIALOG };
#endifprotected:virtual void DoDataExchange(CDataExchange* pDX);	// DDX/DDV 支持// 实现
protected:HICON m_hIcon;// 生成的消息映射函数virtual BOOL OnInitDialog();afx_msg void OnSysCommand(UINT nID, LPARAM lParam);afx_msg void OnPaint();afx_msg HCURSOR OnQueryDragIcon();DECLARE_MESSAGE_MAP()
public:CTabCtrl m_TABItem;CComputerName m_ComputerName;CIDName m_CidName;CSYSTime m_sysTime;C16TH m_16th;C17TH m_17th;afx_msg void OnTcnSelchangeTab1(NMHDR *pNMHDR, LRESULT *pResult);
};

Dlg源文件代码如下:


// MFCApplication1Dlg.cpp: 实现文件
//#include "pch.h"
#include "framework.h"
#include "MFCApplication1.h"
#include "MFCApplication1Dlg.h"
#include "afxdialogex.h"#ifdef _DEBUG
#define new DEBUG_NEW
#endif// 用于应用程序“关于”菜单项的 CAboutDlg 对话框class CAboutDlg : public CDialogEx
{
public:CAboutDlg();// 对话框数据
#ifdef AFX_DESIGN_TIMEenum { IDD = IDD_ABOUTBOX };
#endifprotected:virtual void DoDataExchange(CDataExchange* pDX);    // DDX/DDV 支持// 实现
protected:DECLARE_MESSAGE_MAP()
};CAboutDlg::CAboutDlg() : CDialogEx(IDD_ABOUTBOX)
{
}void CAboutDlg::DoDataExchange(CDataExchange* pDX)
{CDialogEx::DoDataExchange(pDX);
}BEGIN_MESSAGE_MAP(CAboutDlg, CDialogEx)
END_MESSAGE_MAP()// CMFCApplication1Dlg 对话框CMFCApplication1Dlg::CMFCApplication1Dlg(CWnd* pParent /*=nullptr*/): CDialogEx(IDD_MFCAPPLICATION1_DIALOG, pParent)
{m_hIcon = AfxGetApp()->LoadIcon(IDI_ICON1);
}void CMFCApplication1Dlg::DoDataExchange(CDataExchange* pDX)
{CDialogEx::DoDataExchange(pDX);DDX_Control(pDX, IDC_TAB1, m_TABItem);
}BEGIN_MESSAGE_MAP(CMFCApplication1Dlg, CDialogEx)ON_WM_SYSCOMMAND()ON_WM_PAINT()ON_WM_QUERYDRAGICON()ON_NOTIFY(TCN_SELCHANGE, IDC_TAB1, &CMFCApplication1Dlg::OnTcnSelchangeTab1)
END_MESSAGE_MAP()// CMFCApplication1Dlg 消息处理程序BOOL CMFCApplication1Dlg::OnInitDialog()
{CDialogEx::OnInitDialog();// 将“关于...”菜单项添加到系统菜单中。// IDM_ABOUTBOX 必须在系统命令范围内。ASSERT((IDM_ABOUTBOX & 0xFFF0) == IDM_ABOUTBOX);ASSERT(IDM_ABOUTBOX < 0xF000);CMenu* pSysMenu = GetSystemMenu(FALSE);if (pSysMenu != nullptr){BOOL bNameValid;CString strAboutMenu;bNameValid = strAboutMenu.LoadString(IDS_ABOUTBOX);ASSERT(bNameValid);if (!strAboutMenu.IsEmpty()){pSysMenu->AppendMenu(MF_SEPARATOR);pSysMenu->AppendMenu(MF_STRING, IDM_ABOUTBOX, strAboutMenu);}}// 设置此对话框的图标。  当应用程序主窗口不是对话框时,框架将自动//  执行此操作SetIcon(m_hIcon, TRUE);			// 设置大图标SetIcon(m_hIcon, FALSE);		// 设置小图标// TODO: 在此添加额外的初始化代码m_TABItem.InsertItem(0, _T("计算机名"));m_TABItem.InsertItem(1, _T("获取IP"));m_TABItem.InsertItem(2, _T("日期"));m_TABItem.InsertItem(3, _T("16讲作业"));m_TABItem.InsertItem(4, _T("17讲作业"));m_ComputerName.Create(IDD_DIALOGComputerName, GetDlgItem(IDC_TAB1));m_CidName.Create(IDD_DIALOGID, GetDlgItem(IDC_TAB1));m_sysTime.Create(IDD_DIALOGTime, GetDlgItem(IDC_TAB1));m_16th.Create(IDD_DIALOG_16th, GetDlgItem(IDC_TAB1));m_17th.Create(IDD_DIALOG_17th, GetDlgItem(IDC_TAB1));CRect cRect;m_TABItem.GetClientRect(&cRect);// 调用子对话框在父窗口中的位置,可以改动数值,使子窗口的大小合适cRect.top += 20;cRect.bottom -= 3;cRect.left += 2;cRect.right -= 2;// 移动窗口m_ComputerName.MoveWindow(&cRect);m_CidName.MoveWindow(&cRect);m_sysTime.MoveWindow(&cRect);m_16th.MoveWindow(&cRect);m_17th.MoveWindow(&cRect);// 隐藏进程性能对话框页面m_ComputerName.ShowWindow(true);m_CidName.ShowWindow(false);m_sysTime.ShowWindow(false);m_16th.ShowWindow(false);m_17th.ShowWindow(false);// 默认设置页面 m_TABItem.SetCurSel(0);/****************************************************************/// 为列表视图控件位置 大小等设置CRect cRect1;m_17th.m_school.GetClientRect(&cRect1);// 将列表视图控件风格更新一下m_17th.m_school.SetExtendedStyle(m_17th.m_school.GetExtendedStyle() | LVS_EX_FULLROWSELECT | LVS_EX_GRIDLINES);// 为列表视图控件添加对应的信息:世界一流高校	所属区域	世界排名m_17th.m_school.InsertColumn(0, _T("世界排名"), LVCFMT_CENTER, cRect1.Width() / 3, 0);m_17th.m_school.InsertColumn(1, _T("高校名称"), LVCFMT_CENTER, cRect1.Width() / 3, 0);m_17th.m_school.InsertColumn(2, _T("所属区域"), LVCFMT_CENTER, cRect1.Width() / 3, 0);// 为列表视图控件插入对应的数据项m_17th.m_school.InsertItem(0, _T("1"));m_17th.m_school.SetItemText(0, 1, _T("麻省理工学院"));m_17th.m_school.SetItemText(0, 2, _T("美国"));m_17th.m_school.InsertItem(1, _T("3"));m_17th.m_school.SetItemText(1, 1, _T("哈佛大学"));m_17th.m_school.SetItemText(1, 2, _T("美国"));m_17th.m_school.InsertItem(2, _T("5"));m_17th.m_school.SetItemText(2, 1, _T("牛津大学"));m_17th.m_school.SetItemText(2, 2, _T("英国"));m_17th.m_school.InsertItem(3, _T("6"));m_17th.m_school.SetItemText(3, 1, _T("剑桥大学"));m_17th.m_school.SetItemText(3, 2, _T("英国"));m_17th.m_school.InsertItem(4, _T("17"));m_17th.m_school.SetItemText(4, 1, _T("清华大学"));m_17th.m_school.SetItemText(4, 2, _T("中国"));m_17th.m_school.InsertItem(5, _T("30"));m_17th.m_school.SetItemText(5, 1, _T("北京大学"));m_17th.m_school.SetItemText(5, 2, _T("中国"));/****************************************************************/// 创建图像列表m_17th.m_pImageList.Create(16, 16, ILC_COLOR, 2, 2);CBitmap bmp;bmp.LoadBitmap(IDB_BITMAPMAN);m_17th.m_pImageList.Add(&bmp, RGB(0, 0, 0));		// 添加到图像列表bmp.DeleteObject();bmp.LoadBitmap(IDB_BITMAPWOMAN);m_17th.m_pImageList.Add(&bmp, RGB(0, 0, 0));		// 添加到图像列表// 为列表视图控件设置图标m_17th.m_addelems.SetImageList(&m_17th.m_pImageList, LVSIL_SMALL);CString strCaption[2] = { "性别", "姓名" };for (int i = 0; i < 2; i++){m_17th.m_addelems.InsertColumn(i, strCaption[i], LVCFMT_LEFT, 100);}//树控件/***********************************************************/HTREEITEM hRoot = m_17th.m_treeSchool.InsertItem("燕山大学", 1, 0, TVI_ROOT);		// 添加一级结点HTREEITEM h1 = m_17th.m_treeSchool.InsertItem("建环学院", 1, 0, hRoot);		// 添加二级结点HTREEITEM h2 = m_17th.m_treeSchool.InsertItem("软件学院", 1, 0, hRoot);		// 添加二级结点HTREEITEM h21 = m_17th.m_treeSchool.InsertItem("软件工程系", 1, 0, h2);		// 添加三级结点HTREEITEM h22 = m_17th.m_treeSchool.InsertItem("计算机系", 1, 0, h2);			// 添加三级结点HTREEITEM h11 = m_17th.m_treeSchool.InsertItem("土木设计系", 1, 0, h1);		// 添加三级结点HTREEITEM h12 = m_17th.m_treeSchool.InsertItem("环境工程系", 1, 0, h1);			// 添加三级结点// 默认选中结点子项m_17th.m_treeSchool.Select(h21, TVGN_CARET);// 设置树形控件背景m_17th.m_treeSchool.SetBkColor(RGB(100, 200, 120));// 设置树形控件文本颜色m_17th.m_treeSchool.SetTextColor(RGB(255, 0, 0));//m_17th.m_pImageList_treeicon.Create(16, 16, ILC_COLOR, 2, 2);		// 创建图像列表//CBitmap bmp_tree;//bmp_tree.LoadBitmap(IDB_BITMAP1);	// 加载Bitmap资源//m_17th.m_pImageList_treeicon.Add(&bmp_tree, RGB(0, 0, 0));		// 添加到图像列表//bmp_tree.DeleteObject();//bmp_tree.LoadBitmap(IDB_BITMAP2);	// 加载Bitmap资源//m_17th.m_pImageList_treeicon.Add(&bmp_tree, RGB(0, 0, 0));		// 添加到图像列表//m_17th.m_pImageList_treeicon.SetImageList(&m_17th.m_pImageList_treeicon, TVSIL_NORMAL);  // 为树形控件添加图像列表/***********************************************************/// 世界一流IT公司默认m_16th.m_campanyList.InsertString(0, _T("Intel公司"));m_16th.m_campanyList.InsertString(1, _T("IBM公司"));m_16th.m_campanyList.InsertString(2, _T("微软公司"));m_16th.m_campanyList.InsertString(3, _T("华为公司"));m_16th.m_campanyList.InsertString(4, _T("腾讯公司"));m_16th.m_campanyList.InsertString(5, _T("百度公司"));m_16th.m_campanyList.InsertString(6, _T("阿里公司"));// 初始化学历m_16th.m_levelCombox.InsertString(0, _T("小学"));m_16th.m_levelCombox.InsertString(1, _T("初中"));m_16th.m_levelCombox.InsertString(2, _T("高中"));m_16th.m_levelCombox.InsertString(3, _T("专科"));m_16th.m_levelCombox.InsertString(4, _T("本科"));m_16th.m_levelCombox.InsertString(5, _T("硕士研究生"));m_16th.m_levelCombox.InsertString(6, _T("博士研究生"));m_16th.m_levelCombox.InsertString(7, _T("教授"));m_16th.m_levelCombox.InsertString(8, _T("院士"));/***********************************************************/// 程序启动之后 默认性别选中就是男//((CButton*)GetDlgItem(IDC_RADIOMAN))->SetCheck(BST_CHECKED);		UpdateData(FALSE);return TRUE;  // 除非将焦点设置到控件,否则返回 TRUE
}void CMFCApplication1Dlg::OnSysCommand(UINT nID, LPARAM lParam)
{if ((nID & 0xFFF0) == IDM_ABOUTBOX){CAboutDlg dlgAbout;dlgAbout.DoModal();}else{CDialogEx::OnSysCommand(nID, lParam);}
}// 如果向对话框添加最小化按钮,则需要下面的代码
//  来绘制该图标。  对于使用文档/视图模型的 MFC 应用程序,
//  这将由框架自动完成。void CMFCApplication1Dlg::OnPaint()
{if (IsIconic()){CPaintDC dc(this); // 用于绘制的设备上下文SendMessage(WM_ICONERASEBKGND, reinterpret_cast<WPARAM>(dc.GetSafeHdc()), 0);// 使图标在工作区矩形中居中int cxIcon = GetSystemMetrics(SM_CXICON);int cyIcon = GetSystemMetrics(SM_CYICON);CRect rect;GetClientRect(&rect);int x = (rect.Width() - cxIcon + 1) / 2;int y = (rect.Height() - cyIcon + 1) / 2;// 绘制图标dc.DrawIcon(x, y, m_hIcon);}else{CDialogEx::OnPaint();}
}//当用户拖动最小化窗口时系统调用此函数取得光标
//显示。
HCURSOR CMFCApplication1Dlg::OnQueryDragIcon()
{return static_cast<HCURSOR>(m_hIcon);
}void CMFCApplication1Dlg::OnTcnSelchangeTab1(NMHDR *pNMHDR, LRESULT *pResult)
{// TODO: 在此添加控件通知处理程序代码int iCurrentSelectPage = m_TABItem.GetCurSel();	//获取选择tab  ID//标签选择显示操作switch (iCurrentSelectPage){case 0:m_ComputerName.ShowWindow(true);m_CidName.ShowWindow(false);m_sysTime.ShowWindow(false);m_16th.ShowWindow(false);m_17th.ShowWindow(false);break;case 1:m_ComputerName.ShowWindow(false);m_CidName.ShowWindow(true);m_sysTime.ShowWindow(false);m_16th.ShowWindow(false);m_17th.ShowWindow(false);break;case 2:m_ComputerName.ShowWindow(false);m_CidName.ShowWindow(false);m_sysTime.ShowWindow(true);m_16th.ShowWindow(false);m_17th.ShowWindow(false);break;case 3:m_ComputerName.ShowWindow(false);m_CidName.ShowWindow(false);m_sysTime.ShowWindow(false);m_16th.ShowWindow(true);m_17th.ShowWindow(false);break;case 4:m_ComputerName.ShowWindow(false);m_CidName.ShowWindow(false);m_sysTime.ShowWindow(false);m_16th.ShowWindow(false);m_17th.ShowWindow(true);break;}*pResult = 0;
}

下面是各类头文件的代码:
(以/*************************************/分界)

#pragma once// C16TH 对话框class C16TH : public CDialogEx
{DECLARE_DYNAMIC(C16TH)public:C16TH(CWnd* pParent = nullptr);   // 标准构造函数virtual ~C16TH();// 对话框数据
#ifdef AFX_DESIGN_TIMEenum { IDD = IDD_DIALOG_16th };
#endifprotected:virtual void DoDataExchange(CDataExchange* pDX);    // DDX/DDV 支持DECLARE_MESSAGE_MAP()
public:CListBox m_campanyList;CComboBox m_levelCombox;afx_msg void OnBnClickedButton1();CString m_namelistcom;
};/*****************************************/
#pragma once// C17TH 对话框class C17TH : public CDialogEx
{DECLARE_DYNAMIC(C17TH)public:C17TH(CWnd* pParent = nullptr);   // 标准构造函数virtual ~C17TH();// 对话框数据
#ifdef AFX_DESIGN_TIMEenum { IDD = IDD_DIALOG_17th };
#endifprotected:virtual void DoDataExchange(CDataExchange* pDX);    // DDX/DDV 支持DECLARE_MESSAGE_MAP()
public:CListCtrl m_school;afx_msg void OnLvnItemchangedListschool(NMHDR *pNMHDR, LRESULT *pResult);// //列表控件添加的姓名CString m_strName;BOOL m_radio;afx_msg void OnBnClickedButton1();CListCtrl m_addelems;CImageList m_pImageList;		// 创建图像列表对象//CImageList m_pImageList_treeicon;		// 创建树图图像列表对象afx_msg void OnBnClickedRadio3();afx_msg void OnBnClickedRadio4();CTreeCtrl m_treeSchool;afx_msg void OnTvnSelchangedTree1(NMHDR *pNMHDR, LRESULT *pResult);afx_msg void OnBnClickedButton2();
//	CEdit m_strNodeName;CString m_strNodeName;afx_msg void OnBnClickedButton3();afx_msg void OnBnClickedButton4();
};/*****************************************/#pragma once// CComputerName 对话框class CComputerName : public CDialogEx
{DECLARE_DYNAMIC(CComputerName)public:CComputerName(CWnd* pParent = nullptr);   // 标准构造函数virtual ~CComputerName();// 对话框数据
#ifdef AFX_DESIGN_TIMEenum { IDD = IDD_DIALOGComputerName };
#endifprotected:virtual void DoDataExchange(CDataExchange* pDX);    // DDX/DDV 支持DECLARE_MESSAGE_MAP()
};/*****************************************/
#pragma once// CIDName 对话框class CIDName : public CDialogEx
{DECLARE_DYNAMIC(CIDName)public:CIDName(CWnd* pParent = nullptr);   // 标准构造函数virtual ~CIDName();// 对话框数据
#ifdef AFX_DESIGN_TIMEenum { IDD = IDD_DIALOGID };
#endifprotected:virtual void DoDataExchange(CDataExchange* pDX);    // DDX/DDV 支持DECLARE_MESSAGE_MAP()
public:
//	DWORD m_strIPadress;afx_msg void OnBnClickedButton1();CIPAddressCtrl m_IDAdress;
};/*****************************************/#pragma once// CSYSTime 对话框class CSYSTime : public CDialogEx
{DECLARE_DYNAMIC(CSYSTime)public:CSYSTime(CWnd* pParent = nullptr);   // 标准构造函数virtual ~CSYSTime();// 对话框数据
#ifdef AFX_DESIGN_TIMEenum { IDD = IDD_DIALOGTime };
#endifprotected:virtual void DoDataExchange(CDataExchange* pDX);    // DDX/DDV 支持DECLARE_MESSAGE_MAP()
public:void TimeD_Value();	//时间差函数// //日历时间变量CMonthCalCtrl m_canluner;afx_msg void OnMcnSelchangeMonthcalendar1(NMHDR *pNMHDR, LRESULT *pResult);CDateTimeCtrl m_startTime;CDateTimeCtrl m_endTime;afx_msg void OnDtnDatetimechangeDatetimepicker1(NMHDR *pNMHDR, LRESULT *pResult);afx_msg void OnDtnDatetimechangeDatetimepicker2(NMHDR *pNMHDR, LRESULT *pResult);
};

下面是各类源文件的代码:
(以/*************************************/分界)

// C16TH.cpp: 实现文件
//#include "pch.h"
#include "MFCApplication1.h"
#include "C16TH.h"
#include "afxdialogex.h"// C16TH 对话框IMPLEMENT_DYNAMIC(C16TH, CDialogEx)C16TH::C16TH(CWnd* pParent /*=nullptr*/): CDialogEx(IDD_DIALOG_16th, pParent), m_namelistcom(_T(""))
{}C16TH::~C16TH()
{
}void C16TH::DoDataExchange(CDataExchange* pDX)
{CDialogEx::DoDataExchange(pDX);DDX_Control(pDX, IDC_LIST1, m_campanyList);DDX_Control(pDX, IDC_COMBO1, m_levelCombox);DDX_Text(pDX, IDC_EDIT1, m_namelistcom);
}BEGIN_MESSAGE_MAP(C16TH, CDialogEx)ON_BN_CLICKED(IDC_BUTTON1, &C16TH::OnBnClickedButton1)
END_MESSAGE_MAP()// C16TH 消息处理程序void C16TH::OnBnClickedButton1()
{CString strsuminfo;			// 总信息CString strInfo_box;		// 存放用户选择学历CString strInfo_list;		// 存放用户选择公司名称 //comboxint nSel;nSel = m_levelCombox.GetCurSel();m_levelCombox.GetLBText(nSel, strInfo_box);		// 根据选中索引ID获取该项字符串//list//if (m_campanyList.GetDlgItem(IDC_LIST1)==NULL)//{//	MessageBox("", "", MB_OK | MB_ICONASTERISK);//	return;//}int nCurSelect;					// 用户选项IDnCurSelect = m_campanyList.GetCurSel();		// 获取当前选中列表选项的ID// 再根据ID获取对应文本内容m_campanyList.GetText(nCurSelect, strInfo_list);strsuminfo += "姓名:" + m_namelistcom+"//"+"公司:" + strInfo_list + "//" + "学历:" + strInfo_box + "//";if (((CButton *)GetDlgItem(IDC_RADIOMAN))->GetCheck() == TRUE){strsuminfo += "性别:男" ;//strsuminfo += "//";}else if (((CButton *)GetDlgItem(IDC_RADIOwoman))->GetCheck() == TRUE){strsuminfo += "性别:女";//strsuminfo += "//";}else if (((CButton *)GetDlgItem(IDC_RADIOno))->GetCheck() == TRUE){strsuminfo += "性别:外星人";//strsuminfo += "//";}SetDlgItemText(IDC_EDIT2, strsuminfo);
}
// C17TH.cpp: 实现文件
//#include "pch.h"
#include "MFCApplication1.h"
#include "C17TH.h"
#include "afxdialogex.h"// C17TH 对话框IMPLEMENT_DYNAMIC(C17TH, CDialogEx)C17TH::C17TH(CWnd* pParent /*=nullptr*/): CDialogEx(IDD_DIALOG_17th, pParent), m_strName(_T("")), m_radio(FALSE), m_strNodeName(_T(""))
{}C17TH::~C17TH()
{
}void C17TH::DoDataExchange(CDataExchange* pDX)
{CDialogEx::DoDataExchange(pDX);DDX_Control(pDX, IDC_LIST_school, m_school);DDX_Text(pDX, IDC_EDIT2, m_strName);DDX_Radio(pDX, IDC_RADIO1, m_radio);DDX_Control(pDX, IDC_LIST2, m_addelems);DDX_Control(pDX, IDC_TREE1, m_treeSchool);//  DDX_Control(pDX, IDC_EDIT5, m_strNodeName);DDX_Text(pDX, IDC_EDIT5, m_strNodeName);
}BEGIN_MESSAGE_MAP(C17TH, CDialogEx)ON_NOTIFY(LVN_ITEMCHANGED, IDC_LIST_school, &C17TH::OnLvnItemchangedListschool)ON_BN_CLICKED(IDC_BUTTON1, &C17TH::OnBnClickedButton1)ON_BN_CLICKED(IDC_RADIO3, &C17TH::OnBnClickedRadio3)ON_BN_CLICKED(IDC_RADIO4, &C17TH::OnBnClickedRadio4)ON_NOTIFY(TVN_SELCHANGED, IDC_TREE1, &C17TH::OnTvnSelchangedTree1)ON_BN_CLICKED(IDC_BUTTON2, &C17TH::OnBnClickedButton2)ON_BN_CLICKED(IDC_BUTTON3, &C17TH::OnBnClickedButton3)ON_BN_CLICKED(IDC_BUTTON4, &C17TH::OnBnClickedButton4)
END_MESSAGE_MAP()// C17TH 消息处理程序void C17TH::OnLvnItemchangedListschool(NMHDR *pNMHDR, LRESULT *pResult)
{LPNMLISTVIEW pNMLV = reinterpret_cast<LPNMLISTVIEW>(pNMHDR);// TODO: 在此添加控件通知处理程序代码NMLISTVIEW *pNMListView = (NMLISTVIEW*)pNMHDR;CString strSchoolName;		// 此变量用来存放字符串if (pNMListView->iItem != -1)	// 如果iItem不是-1,就证明有列表项被选择{strSchoolName = "排名:";strSchoolName += m_school.GetItemText(pNMListView->iItem, 0);strSchoolName += "  名称:";strSchoolName += m_school.GetItemText(pNMListView->iItem, 1);strSchoolName += "  地区:";strSchoolName += m_school.GetItemText(pNMListView->iItem, 2);SetDlgItemText(IDC_EDIT_schoolinfo, strSchoolName);}*pResult = 0;
}void C17TH::OnBnClickedButton1()
{// TODO: 在此添加控件通知处理程序代码UpdateData(TRUE);int iNum = m_addelems.GetItemCount();CString strSex;			// 性别int iconIndex;			// 图标if (m_radio == 0){strSex = "男";iconIndex = 0;}else{strSex = "女";iconIndex = 1;}m_addelems.InsertItem(iNum, strSex, iconIndex);		// 插入行m_addelems.SetItemText(iNum, 1, m_strName);UpdateData(false);
}void C17TH::OnBnClickedRadio3()
{// TODO: 在此添加控件通知处理程序代码m_addelems.ModifyStyle(LVS_ICON | LVS_LIST | LVS_REPORT | CBS_OWNERDRAWFIXED,IDC_LIST2, TRUE);
}void C17TH::OnBnClickedRadio4()
{// TODO: 在此添加控件通知处理程序代码m_addelems.ModifyStyle(LVS_ICON | LVS_LIST | LVS_SMALLICON, LVS_REPORT, TRUE);
}void C17TH::OnTvnSelchangedTree1(NMHDR *pNMHDR, LRESULT *pResult)
{LPNMTREEVIEW pNMTreeView = reinterpret_cast<LPNMTREEVIEW>(pNMHDR);// TODO: 在此添加控件通知处理程序代码CString strName = m_treeSchool.GetItemText(pNMTreeView->itemNew.hItem);		// 获取活动结点文本SetDlgItemText(IDC_EDIT_ShowElem, strName);*pResult = 0;
}void C17TH::OnBnClickedButton2()
{// TODO: 在此添加控件通知处理程序代码UpdateData(true);if (m_strNodeName.IsEmpty()){MessageBox("添加结点名称不能为空!!!", "提示", MB_OK | MB_ICONERROR);return;}HTREEITEM hNew = m_treeSchool.InsertItem(m_strNodeName, 1, 0, m_treeSchool.GetSelectedItem());m_strNodeName = "";UpdateData(false);m_treeSchool.SetFocus();		// 更新控件显示 }void C17TH::OnBnClickedButton3()
{// TODO: 在此添加控件通知处理程序代码HTREEITEM m_CurTree = m_treeSchool.GetSelectedItem();CString m_find = m_treeSchool.GetItemText(m_CurTree);if (m_find =="燕山大学"){MessageBox("不能删除根节点!", "提示", MB_OK | MB_ICONINFORMATION);return;}else{m_treeSchool.DeleteItem(m_CurTree);}}void C17TH::OnBnClickedButton4()
{// TODO: 在此添加控件通知处理程序代码m_treeSchool.DeleteAllItems();HTREEITEM hRoot = m_treeSchool.InsertItem("燕山大学", 1, 0, TVI_ROOT);		// 添加一级结点MessageBox("所有结点全部已经删除成功!", "提示", MB_OK | MB_ICONINFORMATION);
}
// CComputerName.cpp: 实现文件
//#include "pch.h"
#include "MFCApplication1.h"
#include "CComputerName.h"
#include "afxdialogex.h"// CComputerName 对话框IMPLEMENT_DYNAMIC(CComputerName, CDialogEx)CComputerName::CComputerName(CWnd* pParent /*=nullptr*/): CDialogEx(IDD_DIALOGComputerName, pParent)
{}CComputerName::~CComputerName()
{
}void CComputerName::DoDataExchange(CDataExchange* pDX)
{CDialogEx::DoDataExchange(pDX);
}BEGIN_MESSAGE_MAP(CComputerName, CDialogEx)
END_MESSAGE_MAP()// CComputerName 消息处理程序
// CIDName.cpp: 实现文件
//#include "pch.h"
#include "MFCApplication1.h"
#include "CIDName.h"
#include "afxdialogex.h"// CIDName 对话框IMPLEMENT_DYNAMIC(CIDName, CDialogEx)CIDName::CIDName(CWnd* pParent /*=nullptr*/): CDialogEx(IDD_DIALOGID, pParent){}CIDName::~CIDName()
{
}void CIDName::DoDataExchange(CDataExchange* pDX)
{CDialogEx::DoDataExchange(pDX);//  DDX_IPAddress(pDX, IDC_IPADDRESS1, m_strIPadress);DDX_Control(pDX, IDC_IPADDRESS1, m_IDAdress);
}BEGIN_MESSAGE_MAP(CIDName, CDialogEx)ON_BN_CLICKED(IDC_BUTTON1, &CIDName::OnBnClickedButton1)
END_MESSAGE_MAP()// CIDName 消息处理程序void CIDName::OnBnClickedButton1()
{// TODO: 在此添加控件通知处理程序代码WORD wVersionRequested;WSADATA wsaData;char strLocalName[255];CString strIpAddress;PHOSTENT pHostInfo;wVersionRequested = MAKEWORD(2, 0);if (WSAStartup(wVersionRequested, &wsaData) == 0)		// 初始数据{if (gethostname(strLocalName, sizeof(strLocalName)) == 0)		// 获取主机名称{if ((pHostInfo = gethostbyname(strLocalName)) != NULL)	// 根据主机名称获取对应主机地址{strIpAddress = inet_ntoa(*(struct in_addr*)*pHostInfo->h_addr_list);}}WSACleanup();}m_IDAdress.SetWindowText(strIpAddress);  // 将获取本机的IP显示到IP控件UpdateData(FALSE);}
// CSYSTime.cpp: 实现文件
//#include "pch.h"
#include "MFCApplication1.h"
#include "CSYSTime.h"
#include "afxdialogex.h"// CSYSTime 对话框IMPLEMENT_DYNAMIC(CSYSTime, CDialogEx)CSYSTime::CSYSTime(CWnd* pParent /*=nullptr*/): CDialogEx(IDD_DIALOGTime, pParent)
{}CSYSTime::~CSYSTime()
{
}void CSYSTime::DoDataExchange(CDataExchange* pDX)
{CDialogEx::DoDataExchange(pDX);DDX_Control(pDX, IDC_MONTHCALENDAR1, m_canluner);DDX_Control(pDX, IDC_DATETIMEPICKER1, m_startTime);DDX_Control(pDX, IDC_DATETIMEPICKER2, m_endTime);
}BEGIN_MESSAGE_MAP(CSYSTime, CDialogEx)ON_NOTIFY(MCN_SELCHANGE, IDC_MONTHCALENDAR1, &CSYSTime::OnMcnSelchangeMonthcalendar1)ON_NOTIFY(DTN_DATETIMECHANGE, IDC_DATETIMEPICKER1, &CSYSTime::OnDtnDatetimechangeDatetimepicker1)ON_NOTIFY(DTN_DATETIMECHANGE, IDC_DATETIMEPICKER2, &CSYSTime::OnDtnDatetimechangeDatetimepicker2)
END_MESSAGE_MAP()// CSYSTime 消息处理程序void CSYSTime::OnMcnSelchangeMonthcalendar1(NMHDR *pNMHDR, LRESULT *pResult)
{LPNMSELCHANGE pSelChange = reinterpret_cast<LPNMSELCHANGE>(pNMHDR);// TODO: 在此添加控件通知处理程序代码SYSTEMTIME st = { 0 };m_canluner.GetCurSel(&st);CString strOutTime;strOutTime.Format("【你选择的日期为】:%d年%d月%d日", st.wYear, st.wMonth, st.wDay/*,st.wHour,st.wMinute,st.wSecond*/);SetDlgItemText(IDC_STATIC_TimeUp, strOutTime);*pResult = 0;
}void CSYSTime::OnDtnDatetimechangeDatetimepicker1(NMHDR *pNMHDR, LRESULT *pResult)
{LPNMDATETIMECHANGE pDTChange = reinterpret_cast<LPNMDATETIMECHANGE>(pNMHDR);// TODO: 在此添加控件通知处理程序代码TimeD_Value();*pResult = 0;
}void CSYSTime::OnDtnDatetimechangeDatetimepicker2(NMHDR *pNMHDR, LRESULT *pResult)
{LPNMDATETIMECHANGE pDTChange = reinterpret_cast<LPNMDATETIMECHANGE>(pNMHDR);// TODO: 在此添加控件通知处理程序代码TimeD_Value();*pResult = 0;
}void CSYSTime::TimeD_Value()
{SYSTEMTIME time_begin = { 0 }, time_end = { 0 };m_startTime.GetTime(&time_begin);		// 获取起始时间m_endTime.GetTime(&time_end);		// 获取结束时间FILETIME ft_begin, ft_end;SystemTimeToFileTime(&time_begin, &ft_begin);SystemTimeToFileTime(&time_end, &ft_end);ULARGE_INTEGER u_begin, u_end;u_begin.u.HighPart = ft_begin.dwHighDateTime;u_begin.u.LowPart = ft_begin.dwLowDateTime;u_end.u.HighPart = ft_end.dwHighDateTime;u_end.u.LowPart = ft_end.dwLowDateTime;ULONGLONG ull_span = 0;if (u_end.QuadPart >= u_begin.QuadPart){ull_span = u_end.QuadPart - u_begin.QuadPart;}else{ull_span = u_begin.QuadPart - u_end.QuadPart;}int n_seconds = static_cast<int>(ull_span / 10000000);		// 秒int n_minuts = n_seconds / 60;		// 分int n_hour = n_minuts / 60;		// 小时int n_days = n_hour / 24;		// 天CString strOutTime;strOutTime.Format("秒数:%d秒\r\n分钟:%d分钟\r\n小时:%d小时\r\n天数:%d天\r\n",n_seconds, n_minuts, n_hour, n_days);SetDlgItemText(IDC_EDIT_TimeDTime, strOutTime);
}

这篇关于MFC应用程序(控件集合)——标签控件_IP控件_时间控件_List Control控件_Tree Control控件_命令按钮_列表框_组合框_图片_滚动控件的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!


原文地址:https://blog.csdn.net/weixin_45525272/article/details/104820674
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.chinasem.cn/article/398108

相关文章

使用Python实现调用API获取图片存储到本地的方法

《使用Python实现调用API获取图片存储到本地的方法》开发一个自动化工具,用于从JSON数据源中提取图像ID,通过调用指定API获取未经压缩的原始图像文件,并确保下载结果与Postman等工具直接... 目录使用python实现调用API获取图片存储到本地1、项目概述2、核心功能3、环境准备4、代码实现

Java List排序实例代码详解

《JavaList排序实例代码详解》:本文主要介绍JavaList排序的相关资料,Java排序方法包括自然排序、自定义排序、Lambda简化及多条件排序,实现灵活且代码简洁,文中通过代码介绍的... 目录一、自然排序二、自定义排序规则三、使用 Lambda 表达式简化 Comparator四、多条件排序五、

WinForms中主要控件的详细使用教程

《WinForms中主要控件的详细使用教程》WinForms(WindowsForms)是Microsoft提供的用于构建Windows桌面应用程序的框架,它提供了丰富的控件集合,可以满足各种UI设计... 目录一、基础控件1. Button (按钮)2. Label (标签)3. TextBox (文本框

uniapp小程序中实现无缝衔接滚动效果代码示例

《uniapp小程序中实现无缝衔接滚动效果代码示例》:本文主要介绍uniapp小程序中实现无缝衔接滚动效果的相关资料,该方法可以实现滚动内容中字的不同的颜色更改,并且可以根据需要进行艺术化更改和自... 组件滚动通知只能实现简单的滚动效果,不能实现滚动内容中的字进行不同颜色的更改,下面实现一个无缝衔接的滚动

Java实现图片淡入淡出效果

《Java实现图片淡入淡出效果》在现代图形用户界面和游戏开发中,**图片淡入淡出(FadeIn/Out)**是一种常见且实用的视觉过渡效果,它可以用于启动画面、场景切换、轮播图、提示框弹出等场景,通过... 目录1. 项目背景详细介绍2. 项目需求详细介绍2.1 功能需求2.2 非功能需求3. 相关技术详细

Python日期和时间完全指南与实战

《Python日期和时间完全指南与实战》在软件开发领域,‌日期时间处理‌是贯穿系统设计全生命周期的重要基础能力,本文将深入解析Python日期时间的‌七大核心模块‌,通过‌企业级代码案例‌揭示最佳实践... 目录一、背景与核心价值二、核心模块详解与实战2.1 datetime模块四剑客2.2 时区处理黄金法

macOS Sequoia 15.5 发布: 改进邮件和屏幕使用时间功能

《macOSSequoia15.5发布:改进邮件和屏幕使用时间功能》经过常规Beta测试后,新的macOSSequoia15.5现已公开发布,但重要的新功能将被保留到WWDC和... MACOS Sequoia 15.5 正式发布!本次更新为 Mac 用户带来了一系列功能强化、错误修复和安全性提升,进一步增

Java如何根据文件名前缀自动分组图片文件

《Java如何根据文件名前缀自动分组图片文件》一大堆文件(比如图片)堆在一个目录下,它们的命名规则遵循一定的格式,混在一起很难管理,所以本文小编就和大家介绍一下如何使用Java根据文件名前缀自动分组图... 目录需求背景分析思路实现代码输出结果知识扩展需求一大堆文件(比如图片)堆在一个目录下,它们的命名规

Pandas进行周期与时间戳转换的方法

《Pandas进行周期与时间戳转换的方法》本教程将深入讲解如何在pandas中使用to_period()和to_timestamp()方法,完成时间戳与周期之间的转换,并结合实际应用场景展示这些方法的... 目录to_period() 时间戳转周期基本操作应用示例to_timestamp() 周期转时间戳基

将图片导入Python的turtle库的详细过程

《将图片导入Python的turtle库的详细过程》在Python编程的世界里,turtle库以其简单易用、图形化交互的特点,深受初学者喜爱,随着项目的复杂度增加,仅仅依靠线条和颜色来绘制图形可能已经... 目录开篇引言正文剖析1. 理解基础:Turtle库的工作原理2. 图片格式与支持3. 实现步骤详解第