效果如下所示: 这个控件使用起来十分简单,选中这个控件,右键选择类向导,添加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); }这个控件主要用于一些参数的设置,比如音量大小的调节等场合。
演示效果如下: 右键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"注册热键失败!"); } }效果图如下: 直接上代码吧 在初始化对话框函数中需要注意的是,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); }