MFC-三个基本控件、SliderControl、HotKey以及ListControl

1.MFC中三个基本的控件介绍

1.SliderControl

效果如下所示:
这里写图片描述
这个控件使用起来十分简单,选中这个控件,右键选择类向导,添加WM_HSCROL消息,代码如下:

void CSliderDemoDlg::OnHScroll(UINT nSBCode, UINT nPos, CScrollBar* pScrollBar)
{
    // TODO: 在此添加消息处理程序代码和/或调用默认值
    int nowPos = m_slider.GetPos();
    CString strOut;
    strOut.Format(L"滑块控件的位置:%d", nowPos);
    m_pos.SetWindowTextW(strOut);

    CDialogEx::OnHScroll(nSBCode, nPos, pScrollBar);
}

这个控件主要用于一些参数的设置,比如音量大小的调节等场合。

2. HotKeyControl

演示效果如下:
这里写图片描述
右键hotkeyControl控件,类向导添加WM_HOTKEY消息,添加代码如下:

void CHotKeyDemoDlg::OnHotKey(UINT nHotKeyId, UINT nKey1, UINT nKey2)
{
    // TODO: 在此添加消息处理程序代码和/或调用默认值
    if (nHotKeyId == 1)
    {
        ShowWindow(SW_SHOW);
        UnregisterHotKey(m_hWnd, 1);
    }

    CDialogEx::OnHotKey(nHotKeyId, nKey1, nKey2);
}

还有一个设置按钮代码的添加:

void CHotKeyDemoDlg::OnBnClickedBtnSet()
{
    // TODO: 在此添加控件通知处理程序代码
    WORD wVk, wMod;
    m_hotKey.GetHotKey(wVk, wMod);
    if (RegisterHotKey(m_hWnd, 1, wMod, wVk))
    {
        ShowWindow(SW_HIDE);
    }
    else
    {
        MessageBox(L"注册热键失败!");
    }
}

3. ListControl

效果图如下:
这里写图片描述
直接上代码吧
在初始化对话框函数中需要注意的是,m_imageList变量需要在.h文件中声明:CImageList m_imageList;

BOOL CListCtrlDemoDlg::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);        // 设置小图标

    // TODO: 在此添加额外的初始化代码
    m_list.InsertColumn(0, L"第一列", LVCFMT_LEFT, 200);
    m_list.InsertColumn(1, L"第二列", LVCFMT_LEFT, 200);

    m_imageList.Create(32, 32, ILC_COLOR32, 1, 1);
    m_imageList.Add(m_hIcon);

    m_list.SetImageList(&m_imageList, LVSIL_SMALL);
    m_list.SetImageList(&m_imageList, LVSIL_NORMAL);


    return TRUE;  // 除非将焦点设置到控件,否则返回 TRUE
}
void CListCtrlDemoDlg::OnBnClickedBtnAdd()
{
    // TODO: 在此添加控件通知处理程序代码
    int nCount = m_list.GetItemCount();
    int nTemp = 1;
    CString strBuffer;
    strBuffer.Format(L"第 %d 行的第 %d 列", nCount + 1, nTemp++);
    m_list.InsertItem(nCount, strBuffer, 0);

    strBuffer.Format(L"第 %d 行的 %d 列", nCount + 1, nTemp++);
    m_list.SetItemText(nCount, 1, strBuffer);
}
void CListCtrlDemoDlg::OnBnClickedBtnDel()
{
    // TODO: 在此添加控件通知处理程序代码
    int nCount = m_list.GetItemCount();
    for (int i=nCount-1; i>=0; --i)
    {
        if (m_list.GetItemState(i, LVIS_SELECTED) == LVIS_SELECTED)
        {
            m_list.DeleteItem(i);
            break;
        }
    }
}

下面需要注意的是:
右击ComBoBoxComBoxControl控件,类向导,添加CBN_SELCHANGE消息,得到下面的函数,然后添加自己的代码

void CListCtrlDemoDlg::OnSelchangeComboType()
{
    // TODO: 在此添加控件通知处理程序代码
    CComboBox *pComboBox = (CComboBox*)GetDlgItem(IDC_COMBO_TYPE);
    DWORD dwStyle = 0;
    switch (pComboBox->GetCurSel())
    {
    case 0: // 大图标
        dwStyle = LVS_ICON;
        break;
    case 1: // 小图标
        dwStyle = LVS_SMALLICON;
        break;
    case 2: // 列表
        dwStyle = LVS_LIST;
        break;
    case 3: // 详细信息
        dwStyle = LVS_REPORT;
        break;
    default:
        break;
    }

    m_list.ModifyStyle(LVS_TYPEMASK, dwStyle);
}

本文主要是想说明MFC的一些基本功能,没有做太多详细的说明,比如控件绑定的变量名等并没有做说明!如有错误,请批评指正!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值