// MFCtestDlg.cpp: 实现文件 // #include "pch.h" #include "framework.h" #include "MFCtest.h" #include "MFCtestDlg.h" #include "afxdialogex.h" #ifdef _DEBUG #define new DEBUG_NEW #endif // CMFCtestDlg 对话框 CMFCtestDlg::CMFCtestDlg(CWnd* pParent /*=nullptr*/) : CDialogEx(IDD_MFCTEST_DIALOG, pParent) , m_editstr1(_T("")) { m_hIcon = AfxGetApp()->LoadIcon(IDR_MAINFRAME); } void CMFCtestDlg::DoDataExchange(CDataExchange* pDX) { CDialogEx::DoDataExchange(pDX); DDX_Control(pDX, IDC_BUTTON1, m_button1); DDX_Control(pDX, IDC_EDIT1, m_edit1); DDX_Text(pDX, IDC_EDIT1, m_editstr1); DDX_Control(pDX, IDC_CHECK1, m_check1); DDX_Control(pDX, IDC_BUTTON2, m_button2); DDX_Control(pDX, IDC_RADIO1, m_radio1); DDX_Control(pDX, IDC_RADIO2, m_radio2); DDX_Control(pDX, IDC_Group, m_group); DDX_Control(pDX, IDC_SText, m_stext); DDX_Control(pDX, IDC_ps, m_ps); DDX_Control(pDX, IDC_COMBO1, m_combo1); DDX_Control(pDX, IDC_COMBO2, m_combo2); DDX_Control(pDX, IDC_COMBO3, m_combo3); DDX_Control(pDX, IDC_LIST1, m_list1); DDX_Control(pDX, IDC_SLIDER1, m_slider1); DDX_Control(pDX, IDC_PROGRESS1, m_progress1); DDX_Control(pDX, IDC_LIST2, m_list2); DDX_Control(pDX, IDC_COMBO4, m_combo4); DDX_Control(pDX, IDC_TREE1, m_tree1); } BEGIN_MESSAGE_MAP(CMFCtestDlg, CDialogEx) ON_WM_PAINT() ON_WM_QUERYDRAGICON() ON_BN_CLICKED(IDC_BUTTON1, &CMFCtestDlg::OnBnClickedButton1) ON_EN_CHANGE(IDC_EDIT1, &CMFCtestDlg::OnChangeEdit1) ON_BN_CLICKED(IDC_BUTTON2, &CMFCtestDlg::OnBnClickedButton2) ON_BN_CLICKED(IDC_CHECK1, &CMFCtestDlg::OnClickedCheck1) ON_BN_CLICKED(IDC_RADIO1, &CMFCtestDlg::OnClickedRadio1) ON_BN_CLICKED(IDC_RADIO2, &CMFCtestDlg::OnClickedRadio2) ON_BN_CLICKED(IDC_BUTTON5, &CMFCtestDlg::OnBnClickedButton5) ON_BN_CLICKED(IDC_BUTTON4, &CMFCtestDlg::OnBnClickedButton4) ON_BN_CLICKED(IDC_BUTTON6, &CMFCtestDlg::OnBnClickedButton6) ON_BN_CLICKED(IDC_BUTTON7, &CMFCtestDlg::OnBnClickedButton7) ON_BN_CLICKED(IDC_BUTTON8, &CMFCtestDlg::OnBnClickedButton8) ON_BN_CLICKED(IDC_BUTTON9, &CMFCtestDlg::OnBnClickedButton9) ON_BN_CLICKED(IDC_BUTTON11, &CMFCtestDlg::OnBnClickedButton11) ON_CBN_SELCHANGE(IDC_COMBO1, &CMFCtestDlg::OnSelchangeCombo1) ON_CBN_EDITCHANGE(IDC_COMBO1, &CMFCtestDlg::OnEditchangeCombo1) ON_BN_CLICKED(IDC_BUTTON10, &CMFCtestDlg::OnBnClickedButton10) ON_NOTIFY(NM_CUSTOMDRAW, IDC_SLIDER1, &CMFCtestDlg::OnCustomdrawSlider1) ON_BN_CLICKED(IDC_BUTTON12, &CMFCtestDlg::OnBnClickedButton12) ON_CBN_SELCHANGE(IDC_COMBO4, &CMFCtestDlg::OnSelchangeCombo4) ON_NOTIFY(NM_DBLCLK, IDC_LIST2, &CMFCtestDlg::OnDblclkList2) ON_BN_CLICKED(IDC_BUTTON13, &CMFCtestDlg::OnBnClickedButton13) ON_BN_CLICKED(IDC_BUTTON14, &CMFCtestDlg::OnBnClickedButton14) END_MESSAGE_MAP() // CMFCtestDlg 消息处理程序 BOOL CMFCtestDlg::OnInitDialog() { CDialogEx::OnInitDialog(); // 设置此对话框的图标。 当应用程序主窗口不是对话框时,框架将自动 // 执行此操作 SetIcon(m_hIcon, TRUE); // 设置大图标 SetIcon(m_hIcon, FALSE); // 设置小图标 // TODO: 在此添加额外的初始化代码 m_radio1.SetCheck(TRUE);//初始单选框选中 //设置组合框,列表框 for (size_t i = 0; i < 100; i++) { char szitem[256]; CString sstare; sstare.Format("编号%d", i);//int转换字符串 /*sprintf_s(szitem, "ITEM%d", i);*/ m_combo1.AddString(sstare);//追加选项 m_combo1.SetItemData(i, 1000 + i);//设置附加数据 m_list1.AddString(sstare); m_list1.SetItemData(i, 1000 + i);//设置附加数据 m_combo2.AddString(sstare); m_combo3.AddString(sstare); } m_combo1.SetCurSel(1);//设置默认选择项 m_combo2.SetCurSel(1);//设置默认选择项 m_combo3.SetCurSel(1);//设置默认选择项 //设置滑块 m_slider1.SetRange(0, 100);//设置滑块范围0-100 m_slider1.SetPos(50);//设置滑块位置 //设置进度条 m_progress1.SetRange(0, 100);//设置进度条范围0-100 m_progress1.SetPos(90);//设置进度条位置 //列表控件 m_combo4.AddString("图标"); m_combo4.AddString("小图标"); m_combo4.AddString("列表"); m_combo4.AddString("报表"); m_combo4.SetCurSel(0);//设置默认选择项 m_list2.InsertColumn(0, "名称", LVCFMT_LEFT, 150); m_list2.InsertColumn(1, "修改日期", LVCFMT_LEFT, 150); m_list2.InsertColumn(2, "类型", LVCFMT_LEFT, 150); m_list2.InsertColumn(3, "大小", LVCFMT_LEFT, 150); m_list2.SetExtendedStyle(LVS_EX_GRIDLINES);//加入经纬线 CImageList* pimglst = new CImageList; pimglst->Create(IDB_BITMAP3, 24, 1, RGB(255,255,255)); m_list2.SetImageList(pimglst, LVSIL_NORMAL);//将图像链表应用列表控件在图标风格中 m_list2.SetImageList(pimglst, LVSIL_SMALL);//将图像链表应用列表控件在其他风格也有图标 ShowFile("C:"); //测试数据 /*m_list2.InsertItem(0, "目录", 0); m_list2.SetItemText(0, 1, "2100.5.7"); m_list2.SetItemText(0, 2, "dir"); m_list2.SetItemText(0, 3, "3M"); m_list2.InsertItem(1, "文件", 1); m_list2.SetItemText(1, 1, "2100.5.8"); m_list2.SetItemText(1, 2, "ir"); m_list2.SetItemText(1, 3, "5M");*/ //树控件 CImageList* pimglst1 = new CImageList; pimglst1->Create(IDB_BITMAP4, 12, 1, RGB(255, 255, 255)); m_tree1.SetImageList(pimglst1, LVSIL_NORMAL); HTREEITEM nroot=m_tree1.InsertItem("中国", 0,3, NULL); m_tree1.InsertItem("上海", 1, 2, nroot); m_tree1.InsertItem("北京", 1, 2, nroot); m_tree1.InsertItem("广州", 1, 2, nroot); m_tree1.InsertItem("深圳", 1, 2, nroot); m_tree1.SetItemHeight(50); return TRUE; // 除非将焦点设置到控件,否则返回 TRUE } void CMFCtestDlg::ShowFile(CString path) { m_list2.DeleteAllItems(); CString strPath = path; strPath += "/*.*"; CFileFind find;//文件搜索类对象 BOOL gofind = find.FindFile(strPath);//开启查找 int i = 0; while (gofind) { gofind=find.FindNextFile();//找到当前文件,将文件信息保存find对象成员变量中 CString filename = find.GetFileName(); CString* filepath = new CString; *filepath= find.GetFilePath(); if (find.IsDirectory())// && !find.IsDots( { m_list2.InsertItem(i, filename, 0); m_list2.SetItemData(i,(DWORD)filepath); /*Find(filepath);*/ } else { m_list2.InsertItem(i, filename, 1); } i++; } find.Close();//关闭查找 } // 如果向对话框添加最小化按钮,则需要下面的代码 // 来绘制该图标。 对于使用文档/视图模型的 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: 在此添加控件通知处理程序代码 ((CButton*)GetDlgItem(IDC_EDIT1))->SetWindowText("你好");//1.设置文本框文字 //m_edit1.SetWindowTextW(L"你好")//2. //m_editstr1 = "你好";//3.设置m_editstr1 = "你好" //UpdateData(FALSE); //为TRUE时, 将控件里显示的值传给变量; 为FALSE时, 将变量值传给控件显示. //m_button1.GetWindowTextW(m_editstr1);//获取按钮上的文字 ((CButton*)GetDlgItem(IDC_EDIT1))->GetWindowText(m_editstr1);//1.获取文本框文字 AfxMessageBox(m_editstr1);//弹出提示框 } void CMFCtestDlg::OnChangeEdit1() { // TODO: 如果该控件是 RICHEDIT 控件,它将不 // 发送此通知,除非重写 CDialogEx::OnInitDialog() // 函数并调用 CRichEditCtrl().SetEventMask(), // 同时将 ENM_CHANGE 标志“或”运算到掩码中。 // TODO: 在此添加控件通知处理程序代码 //编辑框文本改变时 UpdateData(TRUE); //为TRUE时, 将控件里显示的值传给变量; 为FALSE时, 将变量值传给控件显示. m_button1.SetWindowText(m_editstr1);//设置按钮上的文字 } void CMFCtestDlg::OnBnClickedButton2() { // TODO: 在此添加控件通知处理程序代码 //m_check1.SetCheck(TRUE);//1.设置复选框状态 //((CButton*)GetDlgItem(IDC_CHECK1))->SetWindowTextW(L"文本");//1.设置复选框文字 //m_check1.SetWindowTextW(L"NIHAO");//2. //if (m_check1.GetCheck()) //{ // m_check1.SetCheck(FALSE); //} //else //{ // ((CButton*)GetDlgItem(IDC_CHECK1))->SetCheck(TRUE); //} m_check1.SetCheck(!m_check1.GetCheck());//设置复选框状态精简成一句 } void CMFCtestDlg::OnClickedCheck1() { // TODO: 在此添加控件通知处理程序代码 int a = m_check1.GetCheck(); CString sstare; sstare.Format("%d", a);//int转换字符串 m_button2.SetWindowText(sstare); } void CMFCtestDlg::OnClickedRadio1()//男 { // TODO: 在此添加控件通知处理程序代码 m_radio1.SetCheck(TRUE); m_radio2.SetCheck(FALSE); } void CMFCtestDlg::OnClickedRadio2() { // TODO: 在此添加控件通知处理程序代码 m_radio1.SetCheck(FALSE); m_radio2.SetCheck(TRUE); } void CMFCtestDlg::OnBnClickedButton4() { // TODO: 在此添加控件通知处理程序代码 m_group.SetWindowText("我是分组框"); } void CMFCtestDlg::OnBnClickedButton5() { // TODO: 在此添加控件通知处理程序代码 m_stext.SetWindowText("hello"); } void CMFCtestDlg::OnBnClickedButton6() { // TODO: 在此添加控件通知处理程序代码 m_ps.SetBitmap(::LoadBitmap(AfxGetInstanceHandle(), MAKEINTRESOURCE(IDB_BITMAP2))); } void CMFCtestDlg::OnBnClickedButton7() { // TODO: 在此添加控件通知处理程序代码 m_combo1.ResetContent();//清空所有下拉组合框 m_combo2.ResetContent(); m_combo3.ResetContent(); } void CMFCtestDlg::OnBnClickedButton8() { // TODO: 在此添加控件通知处理程序han代码 m_combo1.DeleteString(m_combo1.GetCurSel());//清空选择项 m_combo2.DeleteString(m_combo2.GetCurSel());//清空选择项 m_combo3.DeleteString(m_combo3.GetCurSel());//清空选择项 } void CMFCtestDlg::OnBnClickedButton9() { // TODO: 在此添加控件通知处理程序代码 CString str; m_combo1.GetLBText(m_combo1.GetCurSel(), str);//获取选择项文本 AfxMessageBox(str); } void CMFCtestDlg::OnBnClickedButton11() { // TODO: 在此添加控件通知处理程序代码 //获取附加数据 DWORD ndata = m_combo1.GetItemData(m_combo1.GetCurSel()); CString strdata; strdata.Format("附加数据%d", ndata);//int转换字符串 AfxMessageBox(strdata); } void CMFCtestDlg::OnSelchangeCombo1() { // TODO: 在此添加控件通知处理程序代码 //消息选择项发生变化 int n = m_combo1.GetCurSel(); m_combo2.SetCurSel(n); m_combo3.SetCurSel(n); } void CMFCtestDlg::OnEditchangeCombo1() { // TODO: 在此添加控件通知处理程序代码 //组合框内容修改 AfxMessageBox("内容修改"); } void CMFCtestDlg::OnBnClickedButton10() { // TODO: 在此添加控件通知处理程序代码 CString str; m_list1.GetText(m_list1.GetCurSel(), str);//获取选择项文本 AfxMessageBox(str); } void CMFCtestDlg::OnCustomdrawSlider1(NMHDR* pNMHDR, LRESULT* pResult) { LPNMCUSTOMDRAW pNMCD = reinterpret_cast<LPNMCUSTOMDRAW>(pNMHDR); // TODO: 在此添加控件通知处理程序代码 int pos = m_slider1.GetPos(); CString strpos; strpos.Format("滑块位置%d", pos);//int转换字符串 this->SetWindowText(strpos);//设置内容到标题 m_progress1.SetPos(pos); *pResult = 0; } void Find(CString path) { } void CMFCtestDlg::OnBnClickedButton12() { // TODO: 在此添加控件通知处理程序代码 /*m_list1.ResetContent();*/ CString strPath = "D:\\12"; strPath += "/*.*"; CFileFind find;//文件搜索类对象 BOOL gofind = find.FindFile(strPath);//开启查找 while (gofind) { gofind = find.FindNextFile();//找到当前文件,将文件信息保存find对象成员变量中 CString filename = find.GetFileName(); CString filepath = find.GetFilePath(); if (find.IsDirectory() && !find.IsDots()) { m_list1.AddString("["); m_list1.AddString(filename); m_list1.AddString("]"); Find(filepath); } else { m_list1.AddString(filename); } } find.Close();//关闭查找 } void CMFCtestDlg::OnSelchangeCombo4() { // TODO: 在此添加控件通知处理程序代码 switch (m_combo4.GetCurSel()) { case 0: m_list2.ModifyStyle(LVS_SMALLICON | LVS_LIST | LVS_REPORT, LVS_ICON); break; case 1: m_list2.ModifyStyle(LVS_ICON | LVS_LIST | LVS_REPORT, LVS_SMALLICON); break; case 2: m_list2.ModifyStyle(LVS_SMALLICON | LVS_ICON | LVS_REPORT, LVS_LIST); break; case 3: m_list2.ModifyStyle(LVS_SMALLICON | LVS_LIST | LVS_ICON, LVS_REPORT); break; } } void CMFCtestDlg::OnDblclkList2(NMHDR* pNMHDR, LRESULT* pResult) { LPNMITEMACTIVATE pNMItemActivate = reinterpret_cast<LPNMITEMACTIVATE>(pNMHDR); // TODO: 在此添加控件通知处理程序代码 *pResult = 0; DWORD ndata=m_list2.GetItemData(pNMItemActivate->iItem);//双击选项 CString* filepath = (CString*)ndata; if (filepath!=NULL) { ShowFile(*filepath); } } void CMFCtestDlg::OnBnClickedButton13() { // TODO: 在此添加控件通知处理程序代码 m_tree1.DeleteItem(m_tree1.GetSelectedItem());//删除选择项 } void CMFCtestDlg::OnBnClickedButton14() { // TODO: 在此添加控件通知处理程序代码 AfxMessageBox(m_tree1.GetItemText(m_tree1.GetSelectedItem()));//获取选择项文本 ; }
原文:https://www.cnblogs.com/ceovs/p/14679406.html