静态文本控件
设置控件文本:
1、使用属性窗口设置。
2、动态设置控件文本:调用CStatic的SetWindowText()方法
(注意:控件ID不能是默认的IDC_STATIC,需修改,不修改不能在类向导中显示,则不能为静态文本控件关联变量)
响应鼠标单击事件:
1、更改静态文本ID,不可为默认。
2、将静态文本控件Styles设置为:Notify
3、通过类向导添加鼠标单击事件。
示例:实现了单击静态文本控件,就可进行网站的超链接。
静态文本控件关联变量:CStatic m_Url;
添加鼠标单击事件:
void CCH7Dlg::OnUrl()
{
CString szUrl;
m_Url.GetWindowText(szUrl);
ShellExecute( NULL,"open",szUrl,NULL,NULL,1);
}
编辑框控件EditBox
编辑框控件可以用于文字的录入,也可用于显示文本,可对编辑框中文本进行复制。剪切、粘贴、删除等。
获取和设置编辑框文本:GetWindowText
(CEdit<-CWnd,GetWindowText()是CWnd提供的)
void GetWindowText(CString& String)const;
String:用于记录编辑框控件中文本。
示例:
CString szText;
m_Content.GetWindowText(szText);
设置编辑框控件文本:SetWindowText(同样来自CWnd类)
void SetWindowText(LPCTSTR lpszString);
lpszString:设置的文本字符串。
示例:
m_Content.SetWindowText(“Hello”);
设置字体
void SetFont(CFont* pFont, BOOL bRedraw = TRUE);
pFont:字体对象指针,表示设置的编辑框控件字体。
bRedraw:是否重绘编辑框。TRUE重绘,FALSE不重绘,默认为TRUE。
(pFont不能是一临时对象,必须是全局的,或者是一个对话框类成员对象)
示例:
CFont m_EditFont;(类成员变量)
m_EditFont.CreateFont(...);
m_Content.SetFont(&m_EditFont);
设置文本颜色:
编辑框字体对象中没有提供设置文本颜色的属性,要设置文本颜色,可处理WM_CTLCOLOR消息。
HBRUSH C*Dlg::OnCtlColor(CDC* pDC,CWnd* pWnd, UINT nCtlColor)
{
HBRUSH hbr = CDialog::OnCtlColor(pDC,pWnd,nCtlColor);
if(nCtlColor == CTLCOLOR_EDIT)
{
pDC->SetTextColor(RGB(255,0,0));//设置设备上下文文本颜色为红色
}
return hbr;
}
编辑框多行显示文本:
1、Styles->Auto HScroll
2、通过代码设置:需要使用”/r/n”
eg: m_Content.SetWindowText(“we are all together!/r/nyou can always remember”);
组合框CombBox
添加数据
1、通过属性窗口:(按ctrl+Enter换行)
2、通过代码:
通过类向导为组合框控件关联变量:
CComboBox m_ComboBoc;
在对话框初始化部分添加代码:
m_ComboBox.AddString(“语文”);
m_ComboBox.AddString(“数学”);
m_ComboBox.AddString(“英语”);
注:(组合框Sort属性:若选择,会自动排序,导致输入顺序和显示顺序不同)
获取组合框中数据:
1、获取选中数据
CString szText;
m_ComboBox.GetWindowText(szText);
2、获取某一项数据
m_ComboBox.GetLBText(2,szText);
设置组合框默认显示数据:
对话框初始化时:
m_ComboBox.SetCuiSel(0);//将第一项设为默认数据
列表框ListBox
添加文本:
1、使用类向导为列表框控件关联变量:
CListBox m_List;
2、使用AddString方法添加数据
m_List.AddString(“语文”);
m_List.AddString(“数学”);
m_List.AddString(“英语”);
注:列表框也有Sort属性。
3、还可在指定位置添加数据
m_List.InserString(1,”物理”);//在第二行添加数据
为列表框数据添加复选功能:
示例:
(要选择“有字符串”选项,这样在文本前会添加复选框)
2、对话框初始化时:
m_DataList.AddString(“语文”);
m_DataList.AddString(“数学”);
m_DataList.AddString("英语");
m_DataList.AddString("物理");
m_DataList.AddString("化学");
3、按钮单击事件:
void CCheckListDlg::OnConfirm()
{
int nItemCount = m_DataList.GetCount();
CString szItemData,szContent;
for( int i = 0; i<nItemCount; i++)
{
if(m_DataList.GetCheck(i) == BST_CHECKED)
{
m_DataList.GetText(i,szItemData);
szContent += szItemData + "/r/n";
}
}
if(!szContent.IsEmpty())
{
MessageBox(szContent,"your choices are:");
}
}
如何同时选则多个项目:将列表框属性设为多选即可
复选框控件:CheckBox
设置和取消复选框选中状态
可通过按钮类CButton的SetCheck方法来实现:
void SetCheck(int nCheck);
nCheck:表按钮的设置状态,值如下:
BST_UNCHECKED:未选中
BST_CHECHED:选中
BST_INDETERMINATE:不确定(只按钮具有BS_3STATE和BS_AUTO3STATE风格时可用)
示例:
m_Badmin.SetCheck(BST_CHECKED);//将按钮设置为选中状态
获得复选框状态:
int GetCheck() const;
示例:
int nState = m_Badmin.GetCheck();
if(nState == BST_CHECKED)
{
MessageBox(“you chosed badmintion”,”notice”);
else
{
MessageBox(“you didn’t choose badmintion”,”notice”);
}
示例:使用复选框统计个人爱好
1、创建基于对话框工程:Habit
复选框控件ID:IDC_PINGPANG,IDC_ZUQIU,IDC_LANQIU,IDC_YUMAO
按钮:IDC_TONGJI
2、添加按钮单击事件
void CHabitDlg::OnTongji()
{
CString szHabitList,szHabit;
szHabitList = "";
for(int i = IDC_PINGPANG; i<IDC_YUMAO + 1; i++)
{
CButton* pBtn = static_cast<CButton*>(GetDlgItem(i));
if(pBtn != NULL)
{
if(pBtn->GetCheck() == BST_CHECKED)
{
pBtn->GetWindowText(szHabit);
szHabitList += szHabit + "/r/n";
}
}
}
MessageBox(szHabitList,"your habits are:");
}
注:
该例通过ID来进行遍历。
static_cast < type-id > ( expression )
该运算符把expression转换为type-id类型,但没有运行时类型检查来保证转换的安全性。做上行转换:把派生类指针转化为基类指针,是安全的
单选按钮控件:RadioButton
为单选按钮设置分组:通过Group属性的设置
获取单选按钮选中状态:
示例:
1、单选按钮ID:IDC_YOU IDC_LIANG IDC_ZHONG IDC_CHA,设置组属性
2、添加按钮单击事件:OnConfirm
void CSelSingleDlg::OnConfirm()
{
CString szChoice;
for(int i = IDC_YOU; i<IDC_CHA + 1; i++)//按ID遍历
{
CButton* pBtn = static_cast<CButton*>(GetDlgItem(i));
if(pBtn != NULL)
{
if(pBtn->GetCheck() == BST_CHECKED)
{
pBtn->GetWindowText(szChoice);
MessageBox("等级:" + szChoice,"提示");
break;
}
}
}
}
按钮控件
示例:图标按钮,并添加提示:
1、基于对话框工程:Icon
按钮控件IDC_Btn:设置属性Styles为Icon
为按钮控件关联变量:CButton m_Btn;
2、添加Icon资源:IDI_ICONBTN
3、对话框初始化时:
m_Btn.SetIcon(LoadIcon(AfxGetResourceHandle(),
MAKEINTRESOURCE(IDI_ICONBTN)));
(SetIcon方法需要一Icon资源作为参数,为获取Icon,调用LoadIcon方法)
4、为图标按钮添加提示功能:
对话框类中增加成员变量:CToolTipCtrl m_ToolTip;
5、对话框初始化时:
m_ToolTip.Create(this);
m_ToolTip.AddTool(&m_Btn,”MessageBoc”);
(AddTool方法参数:HWnd*,提示信息)
图像控件:
使用属性窗口显示位图:
添加位图控件->导入位图->设置位图属性为Bitmap->将控件和位图关联。
动态加载位图:
示例:
按钮单击事件:
void CSmartLoadBmpDlg::OnLoadbmp()
{
CFileDialog flDlg(TRUE, NULL, NULL, OFN_HIDEREADONLY |
OFN_OVERWRITEPROMPT, "位图|*.bmp||");
if (flDlg.DoModal()==IDOK)
{
CString szBmpName;
szBmpName = flDlg.GetPathName();
HBITMAP hOldBmp =
m_Bmp.SetBitmap((HBITMAP)LoadImage(NULL, szBmpName,
IMAGE_BITMAP,0, 0, LR_LOADFROMFILE));
DeleteObject(hOldBmp);
}
}
1、
按钮控件:单击事件 OnConfirm()
列表框控件:CListBox m_DataList;
(然后在C*Dlg头文件中改为:CCheckListBox m_DataList)
列表框控件属性设置如下: