上海网站制作方法,专业做食材网站,创意设计公司官网,互联网技术的作用文章目录 数值型关联变量数值型关联变量的种类介绍 单选按钮与复选框单选按钮的组内选择原理解析单选按钮和复选框以及应用数值型关联变量的开发CMainDlg.cppCInputDlg.hCInputDlg.cpp 附录 数值型关联变量
数值型关联变量的种类介绍
1、 数值型关联变量#xff1a; a)控件型… 文章目录 数值型关联变量数值型关联变量的种类介绍 单选按钮与复选框单选按钮的组内选择原理解析单选按钮和复选框以及应用数值型关联变量的开发CMainDlg.cppCInputDlg.hCInputDlg.cpp 附录 数值型关联变量
数值型关联变量的种类介绍
1、 数值型关联变量 a)控件型关联变量针对于所有MFC工具箱中的控件都有效。 DDX_Control(pDX, IDC_LIST, m_list); b)数值型关联变量 有部分的控件支持数值型关联变量大部分不支持。 c)ListCtrl添加关联变量时控件型的下拉是灰色的。 d)只有可录入的控件才支持数值型关联变量。 编辑框、下拉、日期单选钮和多选框另外ListBox可以关联。 2、数值型关联变量的用法 a)CWnd::UpdateData 更新数据可以认为集体输入输出函数。 b)代入TRUE代表从界面输入到内存类似于cin ) c)代入FALSE代表从内存输出到界面类似于cout ) 单选按钮与复选框
单选按钮的组内选择原理解析
单选按钮 a必须分组设立一个组长 b)WS_GROUP这个属性几乎所有控件都没用除了单选按钮 c)必须把一组单选按钮的第一个设立为组长 d)在类向导中建立关联变量时会发现只有组长有权力建立数值型关联变量。
单选按钮和复选框以及应用数值型关联变量的开发 CMainDlg.cpp
初始化时对列表进行插入
BOOL CMainDlg::OnInitDialog()
{CDialogEx::OnInitDialog();SetIcon(m_hIcon, TRUE); // 设置大图标SetIcon(m_hIcon, FALSE); // 设置小图标m_lsit.InsertColumn(0, _T(工号), LVCFMT_LEFT, 110);m_lsit.InsertColumn(1, _T(姓名), LVCFMT_LEFT, 110);m_lsit.InsertColumn(2, _T(工资), LVCFMT_LEFT, 110);m_lsit.InsertColumn(3, _T(入职日期), LVCFMT_LEFT, 120);m_lsit.InsertColumn(4, _T(性别), LVCFMT_LEFT, 100);m_lsit.InsertColumn(5, _T(学历), LVCFMT_LEFT, 100);m_lsit.InsertColumn(6, _T(语言), LVCFMT_LEFT, 160);m_lsit.SetExtendedStyle(LVS_EX_GRIDLINES | LVS_EX_FULLROWSELECT);return TRUE; // 除非将焦点设置到控件否则返回 TRUE
}CInputDlg.h
class CInputDlg : public CDialogEx
{int m_sNumb;CDateTimeCtrl m_Date;CString m_sName;double m_fSalary;COleDateTime m_sDate;BOOL m_bSex;int m_edu;BOOL m_Eng;BOOL m_Jpn;BOOL m_Rus;BOOL m_Kern;CButton m_bEng;DECLARE_DYNAMIC(CInputDlg)void InputData();CString GetLange();CListCtrl m_lsit;LPCTSTR m_es[6]{ _T(初中),_T(高中), _T(大专), _T(本科), _T(硕士), _T(博士) };
public:CInputDlg(CListCtrl list); // 标准构造函数virtual ~CInputDlg();// 对话框数据
#ifdef AFX_DESIGN_TIMEenum { IDD IDD_INPUT_DLG };
#endifprotected:virtual void DoDataExchange(CDataExchange* pDX); // DDX/DDV 支持DECLARE_MESSAGE_MAP()
public:afx_msg void OnBnClickedOk();afx_msg void OnBnClickedTest();
};CInputDlg.cpp
CInputDlg::CInputDlg(CListCtrl list): CDialogEx(IDD_INPUT_DLG, nullptr), m_lsit(list), m_sNumb(1000), m_sName(_T()), m_fSalary(0), m_sDate(COleDateTime::GetCurrentTime()), m_bSex(FALSE), m_edu(3), m_Eng(FALSE), m_Jpn(FALSE), m_Rus(FALSE), m_Kern(FALSE)
{
}CInputDlg::~CInputDlg()
{
}
void CInputDlg::DoDataExchange(CDataExchange* pDX){CDialogEx::DoDataExchange(pDX);DDX_Text(pDX, IDC_NUMB, m_sNumb); // 函数 界面 内存 交换DDX_Control(pDX, IDC_DATETIME, m_Date);DDX_Text(pDX, IDC_NAME, m_sName);DDX_Text(pDX, IDC_SALARY, m_fSalary);DDX_DateTimeCtrl(pDX, IDC_DATETIME, m_sDate);DDX_Radio(pDX, IDC_RADIO1, m_bSex);DDX_Radio(pDX, IDC_RADIO3, m_edu);DDX_Check(pDX, IDC_CHK_ENG, m_Eng);DDX_Check(pDX, IDC_CHK_JPN, m_Jpn);DDX_Check(pDX, IDC_CHK_RUS, m_Rus);DDX_Check(pDX, IDC_CHK_KERN, m_Kern);DDX_Control(pDX, IDC_CHK_ENG, m_bEng);
}BEGIN_MESSAGE_MAP(CInputDlg, CDialogEx)ON_BN_CLICKED(IDOK, CInputDlg::OnBnClickedOk)ON_BN_CLICKED(IDC_TEST, CInputDlg::OnBnClickedTest)
END_MESSAGE_MAP()//auto p GetOwner(); 背景窗口 不属于父子关系 附着在上面
//CString str;
//p-GetWindowText(str);
void CInputDlg::InputData()
{UpdateData();int i m_lsit.GetItemCount();CString str;
// GetDlgItemText(IDC_NUMB, str); //使用关联数值变量后可不用getdlgitemstr.Format(_T(%d), m_sNumb);m_lsit.InsertItem(i, str);m_lsit.SetItemText(i, 1, m_sName);str.Format(_T(%0.2f), m_fSalary);m_lsit.SetItemText(i, 2, str); str.Format(_T(%d年%d月%d日), m_sDate.GetYear(), m_sDate.GetMonth(), m_sDate.GetDay());m_lsit.SetItemText(i, 3, str);m_lsit.SetItemText(i, 4, m_bSex?_T(女):_T(男));m_lsit.SetItemText(i, 5,m_es[m_edu]);m_lsit.SetItemText(i, 6, GetLange());SetFocus();
}//int n GetDlgItemInt(IDC__CHK_ENG); 原理仍然是atoi( GetDlgItemText表面的文字)
CString CInputDlg::GetLange()
{CString str;if (m_bEng.GetCheck() BST_CHECKED)//if (m_Eng)str _T(英语 );if (m_Jpn)str _T(日语 );if (m_Kern)str _T(韩语 );if (m_Rus)str _T(俄语 );return str;
}void CInputDlg::OnBnClickedOk()
{CWnd* p GetFocus();int nID p-GetDlgCtrlID();if (nID IDOK|| nID IDC_DATETIME)InputData();elseNextDlgCtrl();CDialogEx::OnOK();
}void CInputDlg::OnBnClickedTest()
{if (m_edu 5) //判断是否在范围m_edu 0;auto p (CButton*)GetDlgItem(IDC_EDUC); //获取指针int n 0; do{p-SetCheck((m_edu n)); //设置选择和没有选择的按钮p (CButton*)p-GetWindow(GW_HWNDNEXT); //向下查找n;} while (p !(GetStyle()WS_GROUP)); //判断遇到下一个组长结束 而且p不等于空
} 附录
所有关联变量的类型全 simple text operations 编辑框可以管理以下这些变量种类
void AFXAPI DDX_Text(CDataExchange* pDX, int nIDC, BYTE value);
void AFXAPI DDX_Text(CDataExchange* pDX, int nIDC, short value);
void AFXAPI DDX_Text(CDataExchange* pDX, int nIDC, int value);
void AFXAPI DDX_Text(CDataExchange* pDX, int nIDC, UINT value);
void AFXAPI DDX_Text(CDataExchange* pDX, int nIDC, long value);
void AFXAPI DDX_Text(CDataExchange* pDX, int nIDC, DWORD value);
void AFXAPI DDX_Text(CDataExchange* pDX, int nIDC, LONGLONG value);
void AFXAPI DDX_Text(CDataExchange* pDX, int nIDC, ULONGLONG value);
void AFXAPI DDX_Text(CDataExchange* pDX, int nIDC, CString value);
void AFXAPI DDX_Text(CDataExchange* pDX, int nIDC, LPTSTR value, int nMaxLen);
void AFXAPI DDX_Text(CDataExchange* pDX, int nIDC, float value);
void AFXAPI DDX_Text(CDataExchange* pDX, int nIDC, double value);special control types
void AFXAPI DDX_Check(CDataExchange* pDX, int nIDC, int value); 复选
void AFXAPI DDX_Radio(CDataExchange* pDX, int nIDC, int value); 单选
void AFXAPI DDX_LBString(CDataExchange* pDX, int nIDC, CString value); ListBox
void AFXAPI DDX_LBIndex(CDataExchange* pDX, int nIDC, int index); ListBox
//void AFXAPI DDX_LBStringExact(CDataExchange* pDX, int nIDC, CString value);
void AFXAPI DDX_CBStringExact(CDataExchange* pDX, int nIDC, CString value);
void AFXAPI DDX_CBString(CDataExchange* pDX, int nIDC, CString value); //ComboBox
void AFXAPI DDX_CBIndex(CDataExchange* pDX, int nIDC, int index);//ComboBox
void AFXAPI DDX_Scroll(CDataExchange* pDX, int nIDC, int value);
void AFXAPI DDX_Slider(CDataExchange* pDX, int nIDC, int value);
void AFXAPI DDX_IPAddress(CDataExchange* pDX, int nIDC, DWORD value);
void AFXAPI DDX_DateTimeCtrl(CDataExchange* pDX, int nIDC, CString value);
void AFXAPI DDX_DateTimeCtrl(CDataExchange* pDX, int nIDC, CTime value);
void AFXAPI DDX_DateTimeCtrl(CDataExchange* pDX, int nIDC, COleDateTime value);
void AFXAPI DDX_Control(CDataExchange* pDX, int nIDC, CWnd rControl);