自定义控件—特效列表控件
2010-07-11 20:44:23 来源:WEB开发网3、本程序综合使用了设计模式,详细实现见源代码。下面是TaskListBox部分实现代码:
bool CTaskListBox::CreateTaskList()
{
UINT id = this->GetDlgCtrlID();
CString str;
GetWindowText(str);
m_pTaskList = new CTaskList(this, new CTaskFrame(str), new CPuckerBtn(this), new CTaskItem(this, id));
ASSERT(m_pTaskList);
return m_pTaskList != NULL;
}
bool CTaskListBox::CreateColorList()
{
UINT id = this->GetDlgCtrlID();
CString str;
GetWindowText(str);
m_pTaskList = new CTaskList(this, new CTaskFrame(str), new CPuckerBtn(this), new CColorItem(this, id));
ASSERT(m_pTaskList);
return m_pTaskList != NULL;
}
三、特效列表控件的使用
从对象结构图中可以看出特效列表控件派生自MFC中的CStatic静态控件,其创建方式与静态控件完全相同,控件通过向父窗口发送消息来提供编程接口。下面是特效列表控件的在对话框中的初始化代码:
m_lbTask.CreateTaskList();
CString tasks[] =
{
"Explorer 7.0", "WINRAR 4.0", "MediaPlayer", "Reader 7.0",
"PowerDesigner", "Word 2000", "EXCEL 2000", "RealPlayer 10",
"AutoCAD 2004", "ACCESS 2003"
};
CImageList m_imgList;
m_imgList.Create(IDB_BITMAP1,16, 1, RGB(255,255,255));
ItemInfo item;
item.type = II_ICONTEXT;
for(int i = 0; i < sizeof(tasks) / sizeof(tasks[0]); i++)
{
item.index = i;
item.text = tasks[i];
item.icon = m_imgList.ExtractIcon(i % 10);
m_lbTask.AddItem(item);
}
m_lbTask.ReSize();
更多精彩
赞助商链接