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

来源:互联网 发布:linux 文件分割 编辑:程序博客网 时间:2024/06/10 01:13

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的一些基本功能,没有做太多详细的说明,比如控件绑定的变量名等并没有做说明!如有错误,请批评指正!

1 0
原创粉丝点击