ICode9

精准搜索请尝试: 精确搜索
首页 > 编程语言> 文章详细

C++ MFC

2021-04-20 02:02:13  阅读:173  来源: 互联网

标签:控件 MFC void C++ list2 CMFCtestDlg TODO IDC


// 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()));//获取选择项文本
    ;
}

 

标签:控件,MFC,void,C++,list2,CMFCtestDlg,TODO,IDC
来源: https://www.cnblogs.com/ceovs/p/14679406.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有