第7节-MFC对话框的变量绑定
2021/10/30 23:15:34
本文主要是介绍第7节-MFC对话框的变量绑定,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
https://www.bilibili.com/video/BV1u4411y7aQ?p=8
目录
1、控件类型变量绑定的两种方法-数据交换机制
1)利用GetItem()函数;
2)利用VC向导绑定,对产生的代码进行讲解以及如何手动添加。
2、字符串、数值类型变量的绑定以及数据验证机制
1、控件类型变量绑定的两种方法-数据交换机制
1)利用GetItem()函数;
首先在MFCTestDlg.h的类中定义按钮的指针CButton *pButton;
然后在MFCTestDlg.cpp的初始化部分添加Button = (CButton *)GetDlgItem(IDC_BUTTON1);
最后在button1的按钮触发事件下添加pButton->EnableWindow(FALSE);
MFCTestDlg.h文件
// MFCTestDlg.h : 头文件 // #pragma once #include "afxwin.h" // CMFCTestDlg 对话框 class CMFCTestDlg : public CDialogEx { // 构造 public: CMFCTestDlg(CWnd* pParent = NULL); // 标准构造函数 // 对话框数据 #ifdef AFX_DESIGN_TIME enum { IDD = IDD_MFCTEST_DIALOG }; #endif protected: 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: afx_msg void OnBnClickedButton1(); CButton *pButton; CEdit m_pEdit; //CString m_pstrEdit; int m_pintEdit; };
MFCTestDlg..cpp文件
// MFCTestDlg.cpp : 实现文件 // #include "stdafx.h" #include "MFCTest.h" #include "MFCTestDlg.h" #include "afxdialogex.h" #ifdef _DEBUG #define new DEBUG_NEW #endif // 用于应用程序“关于”菜单项的 CAboutDlg 对话框 class CAboutDlg : public CDialogEx { public: CAboutDlg(); // 对话框数据 #ifdef AFX_DESIGN_TIME enum { IDD = IDD_ABOUTBOX }; #endif protected: 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() // CMFCTestDlg 对话框 CMFCTestDlg::CMFCTestDlg(CWnd* pParent /*=NULL*/) : CDialogEx(IDD_MFCTEST_DIALOG, pParent) /*, m_pstrEdit(_T(""))*/ , m_pintEdit(2) { m_hIcon = AfxGetApp()->LoadIcon(IDR_MAINFRAME); } void CMFCTestDlg::DoDataExchange(CDataExchange* pDX) { CDialogEx::DoDataExchange(pDX); //DDX_Control(pDX, IDC_EDIT1, m_pEdit);//传递按钮的值变换 //DDX_Text(pDX, IDC_EDIT1, m_pstrEdit);//传递文本框的值变换 //DDV_MaxChars(pDX, m_pstrEdit,5);//限定输入的字符长度 DDX_Text(pDX, IDC_EDIT1, m_pintEdit); DDV_MinMaxInt(pDX, m_pintEdit,1,5); } BEGIN_MESSAGE_MAP(CMFCTestDlg, CDialogEx) ON_WM_SYSCOMMAND() ON_WM_PAINT() ON_WM_QUERYDRAGICON() ON_BN_CLICKED(IDC_BUTTON1, &CMFCTestDlg::OnBnClickedButton1) END_MESSAGE_MAP() // CMFCTestDlg 消息处理程序 BOOL CMFCTestDlg::OnInitDialog() { CDialogEx::OnInitDialog(); // 将“关于...”菜单项添加到系统菜单中。 // IDM_ABOUTBOX 必须在系统命令范围内。 ASSERT((IDM_ABOUTBOX & 0xFFF0) == IDM_ABOUTBOX); ASSERT(IDM_ABOUTBOX < 0xF000); CMenu* pSysMenu = GetSystemMenu(FALSE); if (pSysMenu != NULL) { 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); // 设置小图标 ShowWindow(SW_MINIMIZE); // TODO: 在此添加额外的初始化代码 pButton = (CButton *)GetDlgItem(IDC_BUTTON1); /*m_pEdit.SetWindowText(_T("www.5g.com"));*/ //m_pEdit.SetWindowText(_T("123")); return TRUE; // 除非将焦点设置到控件,否则返回 TRUE } void CMFCTestDlg::OnSysCommand(UINT nID, LPARAM lParam) { if ((nID & 0xFFF0) == IDM_ABOUTBOX) { CAboutDlg dlgAbout; dlgAbout.DoModal(); } else { CDialogEx::OnSysCommand(nID, lParam); } } // 如果向对话框添加最小化按钮,则需要下面的代码 // 来绘制该图标。 对于使用文档/视图模型的 MFC 应用程序, // 这将由框架自动完成。 void CMFCTestDlg::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 CMFCTestDlg::OnQueryDragIcon() { return static_cast<HCURSOR>(m_hIcon); } void CMFCTestDlg::OnBnClickedButton1() { // TODO: 在此添加控件通知处理程序代码 //pButton->EnableWindow(FALSE); //UpdateData(TRUE); //MessageBox(m_pstrEdit); //m_pstrEdit = _T("你好"); //UpdateData(FALSE); //UpdateData(TRUE); CString str; str.Format(_T("m_pintEdit=%d"),m_pintEdit); MessageBox(str); m_pintEdit = 456; UpdateData(FALSE); }
运行效果如下
2)利用VC向导绑定,对产生的代码进行讲解以及如何手动添加。
2、字符串、数值类型变量的绑定以及数据验证机制
字符串类型-可以限定长度
数值类型-可以限定长度
UpdateData(TRUE);控制流向变量
UpdateData(FLASE);变量流向控件
这篇关于第7节-MFC对话框的变量绑定的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-12-23DevExpress 怎么实现右键菜单(Context Menu)显示中文?-icode9专业技术文章分享
- 2024-12-22怎么通过控制台去看我的页面渲染的内容在哪个文件中呢-icode9专业技术文章分享
- 2024-12-22el-tabs 组件只被引用了一次,但有时会渲染两次是什么原因?-icode9专业技术文章分享
- 2024-12-22wordpress有哪些好的安全插件?-icode9专业技术文章分享
- 2024-12-22wordpress如何查看系统有哪些cron任务?-icode9专业技术文章分享
- 2024-12-21Svg Sprite Icon教程:轻松入门与应用指南
- 2024-12-20Excel数据导出实战:新手必学的简单教程
- 2024-12-20RBAC的权限实战:新手入门教程
- 2024-12-20Svg Sprite Icon实战:从入门到上手的全面指南
- 2024-12-20LCD1602显示模块详解