三、制作过程
新建一个基于MFC的对话框工程,工程名称叫DownList。添加如图2所示的控件,控件ID按照表1命名,并对控件添加消息响应,如表2所示。
表2 控件的消息映射
控件ID |
消息类型 |
函数名称 |
说明 |
IDC_BTN_CREATE |
BN_CLICKED |
OnBtnCreate |
生成下载列表 |
IDC_BTN_EXPORTLIST |
BN_CLICKED |
OnBtnExportlist |
导出下载列表文件 |
IDC_EDIT_URL |
EN_CHANGE |
OnChangeEditUrl |
检测通配符的出现个数 |
IDC_RADIO_COMMON10 |
BN_CLICKED |
OnRadioCommon10 |
选择单选按钮时的响应 |
IDC_EDIT_WIDTH1 |
EN_CHANGE |
OnChangeEditWidth1 |
输入数字宽度的响应 |
1.对话框初始化,定位到OnInitDialog()。
在return TRUE所在行的上一行添加如下代码:
DisableCommonCtrls();//使设置范围控件初始时不可用
DisableCommonCtrls函数的作用就是设置通配符的设置控件不可用,下面为CDownListDlg类添加成员函数DisableCommonCtrls():
void CDownListDlg::DisableCommonCtrls()
{
for (int i=0; i<36; i++)
{
HWND hWnd = ::GetDlgItem(this->m_hWnd, IDC_RADIO_COMMON10+i);
::EnableWindow(hWnd, FALSE);//使控件呈灰色不可用状态
}
}
2.检测输入通配符的个数,为初始网络地址输入框的CHANGE消息响应函数添加代码。
void CDownListDlg::OnChangeEditUrl()
{
UpdateData();//接收控件数据
int nCount = 0;//通配符计数器,初始为0
for (int i=0; i<m_strURL.GetLength(); i++)
{
if(m_strURL.Mid(i,1) == "*")
{
nCount ++;//通配符*的计数
}
}
if (nCount > 4) //目前只支持1-4个通配符,所以异常处理大于4个通配符的情况
{
MessageBox("通配符个数1-4");
}
m_nCommonNum = nCount;
UpdateData(false);
EnableWnd(nCount); // 根据通配符的个数确定控件的可用程度
// TODO: Add your control notification handler code here
}
|