随笔-145  评论-173  文章-70  trackbacks-0
功能:ListBox中的复选框实现之,每次点击选择,就会从中读取到选择的项,并设置相应的按钮为灰色或者黑色,显示可用或者不可用。

核心代码:
初始化代码中:
    m_CheckList.SubclassDlgItem(IDC_LIST1, 
this); // IDC_LIST1是ListBox控件的资源ID
    m_CheckList.SetCheckStyle(BS_AUTOCHECKBOX);    
    m_CheckList.AddString(
"添加");
    m_CheckList.AddString(
"删除");
    m_CheckList.AddString(
"搜索");
    m_CheckList.AddString(
"修改");
    GetDlgItem(IDC_BUTTON1)
->EnableWindow(FALSE);
    GetDlgItem(IDC_BUTTON2)
->EnableWindow(FALSE);
    GetDlgItem(IDC_BUTTON3)
->EnableWindow(FALSE);
    GetDlgItem(IDC_BUTTON4)
->EnableWindow(FALSE);

    UpdateData(FALSE);





==============================================================================================
实现代码:
void CTest21Dlg::OnSet() 
{
    
// TODO: Add your control notification handler code here
    UpdateData(TRUE);
    
if(1==m_CheckList.GetCheck(0))
        GetDlgItem(IDC_BUTTON1)
->EnableWindow(TRUE);
    
else
        GetDlgItem(IDC_BUTTON1)
->EnableWindow(FALSE);
    
if(1==m_CheckList.GetCheck(1))
        GetDlgItem(IDC_BUTTON2)
->EnableWindow(TRUE);
    
else
        GetDlgItem(IDC_BUTTON2)
->EnableWindow(FALSE);
    
if(1==m_CheckList.GetCheck(2))
        GetDlgItem(IDC_BUTTON3)
->EnableWindow(TRUE);
    
else
        GetDlgItem(IDC_BUTTON3)
->EnableWindow(FALSE);
    
if(1==m_CheckList.GetCheck(3))
        GetDlgItem(IDC_BUTTON4)
->EnableWindow(TRUE);
    
else
        GetDlgItem(IDC_BUTTON4)
->EnableWindow(FALSE);

}





关键问题解决:
如何实现CheckListBox类呢?
初始化代码中给出了答案。首先需要在XXDlg.h文件中声明一个类型就是CheckListBox的,然后在初始化中对这个变量进行特化。
这样,成员就从普通的ListBox变成了CheckListBox类型的。需要注意的是,需要设置属性为hasstring和overdraw。具体的可以看看代码上面的说明。


总结:
如上,
唯一的一点就是API函数的时候,GetCheck函数的使用。
posted on 2010-02-07 00:04 deercoder 阅读(1805) 评论(0)  编辑 收藏 引用

只有注册用户登录后才能发表评论。
网站导航: 博客园   IT新闻   BlogJava   知识库   博问   管理