MFC控件(一)

静态文本控件

设置控件文本:

1、使用属性窗口设置。

2、动态设置控件文本:调用CStaticSetWindowText()方法

(注意:控件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;

}

编辑框多行显示文本:

1Styles->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,”物理”);//在第二行添加数据

为列表框数据添加复选功能:

示例:

MFC控件(一)_第1张图片MFC控件(一)_第2张图片

MFC控件(一)_第3张图片

 

(要选择“有字符串”选项,这样在文本前会添加复选框)

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

设置和取消复选框选中状态

可通过按钮类CButtonSetCheck方法来实现:

void SetCheck(int nCheck);

nCheck:表按钮的设置状态,值如下:

BST_UNCHECKED:未选中

BST_CHECHED:选中

BST_INDETERMINATE:不确定(只按钮具有BS_3STATEBS_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

复选框控件IDIDC_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属性的设置

获取单选按钮选中状态:

示例:

MFC控件(一)_第4张图片 MFC控件(一)_第5张图片

1、单选按钮IDIDC_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;

           }

       }

    }

}

按钮控件

示例:图标按钮,并添加提示:

MFC控件(一)_第6张图片MFC控件(一)_第7张图片

1、基于对话框工程:Icon

按钮控件IDC_Btn:设置属性StylesIcon

为按钮控件关联变量: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->将控件和位图关联。

动态加载位图:

示例:

MFC控件(一)_第8张图片 MFC控件(一)_第9张图片

按钮单击事件:

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)

列表框控件属性设置如下:

 

你可能感兴趣的:(image,String,null,mfc,RadioButton,styles)