MFC应用程序设计中的常用控件

合集下载

MFC_基本控件使用

MFC_基本控件使用

MFC_基本控件使用MFC(Microsoft Foundation Class)是一种用于开发Windows应用程序的编程框架,它提供了一系列的类和函数,方便开发者快速地创建Windows界面和处理事件。

在MFC中,基本控件是开发应用程序的重要组成部分,它们用于显示和交互用户界面。

本文将介绍MFC中几种常用的基本控件以及它们的使用方法。

1. 按钮控件(CButton):按钮控件用于接收用户的点击操作,通常用于触发相应的事件处理函数。

创建按钮控件的方法如下:1)在资源视图中右击对应的对话框,选择“添加控件”;2)选择“按钮”并将其拖动到对话框上;3)设置按钮的属性,如ID、文本、尺寸等。

1)在资源视图中右击对应的对话框,选择“添加控件”;组合框控件允许用户从预定义的选项中进行选择,类似于下拉列表。

创建组合框控件的方法如下:1)在资源视图中右击对应的对话框,选择“添加控件”;2)选择“组合框”并将其拖动到对话框上;3)设置组合框的属性,如ID、选项列表、尺寸等。

4. 列表框控件(CListBox):列表框控件用于显示一个选项列表,并且可以支持多选。

创建列表框控件的方法如下:1)在资源视图中右击对应的对话框,选择“添加控件”;2)选择“列表框”并将其拖动到对话框上;3)设置列表框的属性,如ID、选项列表、尺寸等。

5. 树形视图控件(CTreeCtrl):树形视图控件用于显示一个层级结构的数据,类似于文件夹结构或者程序的菜单栏。

创建树形视图控件的方法如下:1)在资源视图中右击对应的对话框,选择“添加控件”;2)选择“树形视图”并将其拖动到对话框上;3)设置树形视图的属性,如ID、尺寸等;4)使用CTreeCtrl的成员函数添加、删除、修改树节点。

6. List控件(CListCtrl):1)在资源视图中右击对应的对话框,选择“添加控件”;2)选择“List控件”并将其拖动到对话框上;3)设置List控件的属性,如ID、列数、尺寸等;以上是几种常用的MFC基本控件的使用方法,通过使用这些控件,可以轻松地创建出一个功能完善、交互友好的Windows应用程序。

MFC通用控件使用详解

MFC通用控件使用详解

MFC通用控件使用详解首先,我们需要在MFC应用程序中包含要使用的控件的头文件。

例如,要使用按钮控件,我们需要包含afxwin.h文件。

然后,在对话框资源中添加一个按钮控件,并给它一个唯一的ID值。

在OnInitDialog(函数中,我们可以使用以下代码获取按钮控件的指针并对其进行操作:```cppCButton* pButton = (CButton*)GetDlgItem(IDC_BUTTON1);``````cpppButton->SetWindowText(_T("Click Me"));```我们还可以使用以下代码来设置按钮的样式:```cpppButton->SetButtonStyle(BS_DEFPUSHBUTTON);```这将使按钮默认显示为按下按钮。

```cppCEdit* pEdit = (CEdit*)GetDlgItem(IDC_EDIT1);``````cppCString strText;pEdit->GetWindowText(strText);``````cpppEdit->SetWindowText(_T("Hello World"));```对于列表框控件,我们可以使用以下代码获取列表框的指针:```cppCListBox* pListBox = (CListBox*)GetDlgItem(IDC_LIST1); ```然后,我们可以使用以下代码向列表框中添加项:```cpppListBox->AddString(_T("Item 1"));pListBox->AddString(_T("Item 2"));```我们还可以使用以下代码来获取列表框中选定项的索引:```cppint nIndex = pListBox->GetCurSel(;```此外,MFC通用控件还提供了进度条控件和组合框控件等功能。

mfc中listcontrol控件

mfc中listcontrol控件

MFC中ListControl控件介绍MFC(Microsoft Foundation Class)是一种用于开发Windows桌面应用程序的C++框架。

在MFC中,ListControl是一种常用的控件,用于以列表形式显示数据。

本文将介绍MFC中的ListControl控件,包括其基本功能、使用方法以及常见应用场景。

ListControl的基本功能ListControl控件通常用于显示大量数据,并提供滚动、排序和编辑等功能。

它可以容纳多列的数据,在每个单元格中显示文本、图标或其他类型的数据。

ListControl的创建与添加数据在MFC中,创建ListControl控件的方法如下: 1. 在对话框资源中添加一个ListControl控件; 2. 使用Class Wizard添加一个ListControl成员变量,保存对该控件的引用。

ListControl中的数据可以通过以下方式添加: 1. 使用InsertItem函数添加新的行; 2. 使用SetItemText函数设置每个单元格的文本。

ListControl的基本操作ListControl提供了一系列方法和消息来处理用户交互,并对列表数据进行操作。

以下是一些常见的基本操作: - 添加数据:使用InsertItem和SetItemText函数添加新行和设置单元格数据; - 删除数据:使用DeleteItem函数删除选定行; - 编辑数据:使用EditLabel函数编辑选定行的文本; - 排序数据:使用SortItems函数按列排序列表项; - 选择数据:使用SetItemState函数设置选中行; - 获取数据:使用GetItemText函数获取指定行和列的文本数据。

ListControl的高级功能除了基本功能外,ListControl还提供了一些高级功能,可以增强用户体验和数据展示效果:ListControl可以以图标形式显示数据,并提供多种视图模式,如大图标、小图标和列表视图。

MFC应用程序设计中的常用控件

MFC应用程序设计中的常用控件

安康学院电子与信息工程学院实验报告一、实验目的:掌握利用MFC进行应用程序设计时,常用控件的基本方法。

Windows 二、实验题目内容及要求:编写一个用于进行成绩计算的程序。

具体要求如下:1.成绩界面中显示五个裁判所给出的等级制成绩(每个裁判利用一组单选按钮进行打分,分为“优秀”、“良好”、“中等”、“及格”、“不及格”的档次),单击界面中的“计计算出百分制的平均成绩显示在界面中的一个文本框中,在计算时,每个档算”按钮之后,次的成绩对应的百分制成绩为:95分“优秀”——“良好”——85分75分“中等”——分“及格”——65 “不及格”——45分可以进一步进行功能扩展。

要求程序的运行界面自主设计,在完成上述基本功能前提下,代码CAboutDlg獜摴晡?屨class CDialogEx : public#include{ #include??灁汰捩瑡潩?栮:#include??灁汰捩瑡潩?汄?屨publicCAboutDlg();#include慜硦楤污杯硥栮AFX_DESIGN_TIME #ifdef{ IDD = IDD_ABOUTBOX }; _DEBUG#ifdef enum#endif DEBUG_NEW new#define#endif: protected1 / 15, m_po5); IDC_RADIO21pDX, void DDX_Radio( virtual); * pDX IDC_EDIT1, m_result);DoDataExchange(CDataExchange pDX DDX_Text(,: } protected()DECLARE_MESSAGE_MAP, };(BEGIN_MESSAGE_MAP CMFCApplication4Dlg) CAboutDlg::CAboutDlg() : CDialogEx()(CDialogEx IDD_ABOUTBOX) ON_WM_SYSCOMMAND() ON_WM_PAINT{() ON_WM_QUERYDRAGICON}, (IDC_RADIO1ON_BN_CLICKED::OnBnClickedRadio1) CMFCApplication4Dlg&void, (CAboutDlg::DoDataExchange(CDataExchange* IDC_RADIO6ON_BN_CLICKED::OnBnClickedRadio6) pDX) CMFCApplication4Dlg&, { (IDC_BUTTON1ON_BN_CLICKED::OnBnClickedButton1) CMFCApplication4Dlg); CDialogEx ::DoDataExchange(pDX&,( } IDC_EDIT1ON_EN_CHANGE::OnEnChangeEdit1) CMFCApplication4Dlg&()CAboutDlg BEGIN_MESSAGE_MAP(, CDialogEx) END_MESSAGE_MAP END_MESSAGE_MAP()消息处理程序// CMFCApplication4Dlg 对话框// CMFCApplication4Dlg::CMFCApplication4Dlg(CMFCApplication4Dlg::OnInitDialog() CMFCApplication4Dlg) *CWnd pParent/*=NULL*/BOOL{ :CDialogEx::OnInitDialog();(CDialogEx IDD_MFCAPPLICATION4_DIALOG,) pParent , m_po1(0)& 0xFFF0) == , m_po2(0) IDM_ABOUTBOX((ASSERTIDM_ABOUTBOX, m_po3(0) );< 0xF000); IDM_ABOUTBOX , m_po4(0) ( ASSERT , m_po5(0)* pSysMenu = CMenu , m_result(0));{ GetSystemMenu(FALSE) NULL (pSysMenu != m_hIcon =if{ (AfxGetApp()->LoadIcon);IDR_MAINFRAMEbNameValid; } BOOLstrAboutMenu; void CStringbNameValid = ::DoDataExchange(CMFCApplication4Dlg CData strAboutMenu.) *Exchange pDX LoadString(IDS_ABOUTBOX);(bNameValid);{ ASSERT(!strAboutMenu.IsEmpty()) ); ::DoDataExchange(CDialogEx pDX if{DDX_Radio( , m_po1); IDC_RADIO1pDX,, m_po2); IDC_RADIO6, DDX_Radio(pDX); pSysMenu->(, m_po3); IDC_RADIO11, pDX DDX_Radio( AppendMenuMF_SEPARATOR pDXDDX_Radio(IDC_RADIO16, , m_po4);2 / 151) / 2; MF_STRING, pSysMenu-> AppendMenu(, strAboutMenu);IDM_ABOUTBOX dc.DrawIcon(x, y, m_hIcon);}} }else SetIcon(m_hIcon, TRUE );{ SetIcon(m_hIcon, FALSE);::OnPaint(); CDialogEx return TRUE; }}void}UINT HCURSORCMFCApplication4Dlg::OnSysCommand() CMFCApplication4Dlg::OnQueryDragIcon() lParam, nID LPARAM{ {) IDM_ABOUTBOX returnstatic_cast<HCURSOR>(m_hIcon); (( if nID & 0xFFF0) =={ }dlgAbout; CAboutDlgdlgAbout.DoModal();x1,x2,x3,x4,x5; int}elsevoid{ ::OnBnClickedRadio1() CMFCApplication4Dlg, CDialogEx::OnSysCommand({ nID );lParam}switch (m_po1)} {case 0:x1 = 95;::OnPaint() CMFCApplication4Dlg void; break 1:case{(IsIconic()) x1 = 85; if{ break ;2:dc( CPaintDC this);case, SendMessage x1 = 75; ( WM_ICONERASEBKGND>(dc.GetSafeHdc()),; break WPARAM reinterpret_cast < 3:0); case x1 = 65;break ;4:int cxIcon = case SM_CXICON x1 = 45; GetSystemMetrics();;break cyIcon = int }SM_CYICON GetSystemMetrics();} CRect rect;GetClientRect(&rect);+ - (rect.Width() = x int cxIcon 1) void/ 2;::OnBnClickedRadio6()int y = (rect.Height() - cyIcon +CMFCApplication4Dlg3 / 15}{(m_po2) switch{ switch (m_po2)0: case {x2 = 95; case 0:; break x2 = 95;1:case; break x2 = 85; case 1:; break x2 = 85;2:case break;x2 = 75; case 2:; x2 = 75; break3:; break case x2 = 65; case 3:; x2 = 65; break 4:case break;x2 = 45; case 4:;break x2 = 45;}break;(m_po3) switch }{ }0: casex3 = 95;; breakvoid1:::OnBnClickedButton1() case CMFCApplication4Dlg x3= 85; { ; break); UpdateData(TRUE2:case (m_po1) switch x3 = 75; {; case 0: break 3:x1 = 95; case x3 = 65; ; break; break 1:case4:case x1 = 85;x3 = 45; break ;; case 2:break}x1 = 75;(m_po4) switch; break{ 3:case0: case x1 = 65;x4 = 95; ; break; 4:breakcase1:x1 = 45; case x4 = 85; ; break4 / 15x5 = 75; break ;2:; casebreak 3:x4 = 75; casex5 = 65; break;3:case break;4:x4 = 65; casex5 = 45; break;4:break ;case}x4 = 45;m_result = (x1 + x2+x3+x4+x5)/5; break ;);}FALSE UpdateData( (m_po5) switch}{0: casevoid x5 = 95;::OnEnChangeEdit1() ; CMFCApplication4Dlg break 1: { casex5 = 85;};break 2:case运行结果:5 / 152.创建一个简单的调色板程序,程序界面中可以利用滚动条进行红、绿、蓝三种颜色分量值的调整,也可以直接在文本框中输入红、绿、蓝三种颜色分量值,在颜色分量值调整变化的同时,变化的颜色效果通过一个圆形色块进行现式。

mfc中tabcontrol控件用法

mfc中tabcontrol控件用法

mfc中tabcontrol控件用法TabControl控件是MFC中常用的窗口控件之一,用于创建多个选项卡,并在每个选项卡上显示不同的内容。

下面将介绍一下MFC中TabControl控件的基本用法。

首先,在MFC应用程序的对话框或窗口中添加一个TabControl控件。

可以通过在资源编辑器中拖放TabControl控件,或动态创建TabControl控件。

接下来,需要在代码中对TabControl控件进行初始化。

可以通过以下步骤来完成:1. 首先,定义一个成员变量来保存TabControl控件的指针,例如:```CTabCtrl m_tabCtrl;```2. 在对话框或窗口的OnInitDialog()函数中,将成员变量与TabControl控件关联起来,例如:```m_tabCtrl.SubclassDlgItem(IDC_TAB_CONTROL, this);```其中IDC_TAB_CONTROL是TabControl控件的ID,this表示当前对话框或窗口。

3. 接下来,可以设置TabControl控件的属性,例如添加选项卡、设置选项卡的文本等。

通过以下代码示例来添加两个选项卡:```m_tabCtrl.InsertItem(0, _T("Tab 1"));m_tabCtrl.InsertItem(1, _T("Tab 2"));```4. 接下来,可以在每个选项卡上添加子控件,以显示不同的内容。

可以使用对话框或窗口的Create()函数动态创建子控件,并将其与选项卡关联起来。

例如,在第一个选项卡上添加一个编辑框:```CWnd* pTabWnd = new CWnd;pTabWnd->Create(NULL, _T(""), WS_CHILD | WS_VISIBLE, CRect(0, 0, 200, 200), &m_tabCtrl, 0);```其中,CWnd是子控件的基类,编辑框是其中的一种。

MFC_基本控件使用

MFC_基本控件使用

MFC_基本控件使用MFC(Microsoft Foundation Classes)是一个用于基于 Windows 的应用程序开发的C++类库。

它提供了一套基本控件,使开发人员可以轻松地创建 Windows 应用程序的用户界面。

MFC提供了多种基本控件,用于显示和输入数据、与用户交互。

以下是一些最常见的基本控件及其用法:1. Button(按钮)控件Button 控件用于触发特定的操作或执行特定的功能。

创建 Button 控件的方法如下:```CButton myButton;myButton.Create("Click Me", WS_CHILD , WS_VISIBLE ,BS_PUSHBUTTON, CRect(10, 10, 100, 30), pParentWnd, ID_MYBUTTON);```其中,"Click Me" 是按钮的显示文本,WS_CHILD , WS_VISIBLE ,BS_PUSHBUTTON 是按钮的样式。

CRect(10, 10, 100, 30) 是按钮的大小和位置,pParentWnd 是按钮的父窗口,ID_MYBUTTON 是按钮的标识符。

Edit Control 控件用于接收用户输入的文本数据。

创建 Edit Control 控件的方法如下:```CEdit myEdit;myEdit.Create(WS_CHILD , WS_VISIBLE , WS_BORDER, CRect(10, 50, 300, 70), pParentWnd, ID_MYEDIT);```3. List Box(列表框)控件List Box 控件用于显示一个垂直列表,可以包含多个项。

创建 List Box 控件的方法如下:```CListBox myList;myList.Create(WS_CHILD , WS_VISIBLE , WS_BORDER ,LBS_NOTIFY, CRect(10, 90, 200, 200), pParentWnd, ID_MYLIST);```其中,WS_CHILD , WS_VISIBLE , WS_BORDER , LBS_NOTIFY 是列表框的样式。

MFC各种控件属性介绍

MFC各种控件属性介绍

MFC各种控件属性介绍MFC(Microsoft Foundation Class)是Microsoft提供的一套C++类库,用于简化Windows应用程序的开发过程。

MFC中有许多控件可以用于构建用户界面,每个控件都有自己的属性。

接下来将介绍一些常用的MFC控件及其属性。

1. Button按钮控件:3. List Box列表框控件:List Box控件用于显示一列选项供用户选择。

常用属性包括:列表框内容(List Box Content)、选择模式(Selection Mode)、默认选择项(Default Selection)等。

5. Static静态文本控件:Static控件用于显示一些静态文本信息。

常用属性包括:文本内容(Static Text)、字体属性(Font Attributes)、文本颜色(Text Color)等。

6. Check Box复选框控件:Check Box控件用于显示一个选项,用户可以选择或取消选择该选项。

常用属性包括:选项文本(Check Box Text)、选项状态(Check Box State)、选项位置(Check Box Position)等。

7. Radio Button单选按钮控件:Radio Button控件用于显示一组互斥的选项,用户只能选择其中的一个选项。

常用属性包括:选项文本(Radio Button Text)、选项状态(Radio Button State)、选项位置(Radio Button Position)等。

8. Slider滑块控件:Slider控件用于在一个范围内选择一个数值。

常用属性包括:数值范围(Value Range)、默认数值(Default Value)、滑块大小(Slider Size)等。

9. Progress Bar进度条控件:Progress Bar控件用于显示一个操作的进度。

常用属性包括:进度范围(Progress Range)、当前进度(Current Progress)、进度栏宽度(Progress Bar Width)等。

MFC常用控件使用

MFC常用控件使用

MFC常用控件使用MFC(Microsoft Foundation Classes)是一个用于Windows平台的C++类库,用于开发基于Windows的图形用户界面应用程序。

MFC提供了许多常用的控件,开发人员可以使用这些控件来构建各种类型的Windows应用程序。

下面是一些常用的MFC控件和它们的使用方法:1. Button控件:Button控件用于创建按钮。

创建Button控件的方法是通过调用CButton类的Create函数,指定按钮的风格、位置和大小等参数。

之后,可以使用CButton类的成员函数来设置按钮的文本、图片和事件处理程序等。

3. List Box控件:List Box控件用于创建列表框,用于显示列表项。

创建List Box控件的方法是通过调用CListBox类的Create函数,指定列表框的风格、位置和大小等参数。

之后,可以使用CListBox类的成员函数来添加、删除和获取列表项等。

5. Static控件:Static控件用于显示静态文本。

创建Static控件的方法是通过调用CStatic类的Create函数,指定静态文本的风格、位置和大小等参数。

之后,可以使用CStatic类的成员函数来设置静态文本的内容、字体和颜色等。

6. Slider控件:Slider控件用于创建滑动条。

创建Slider控件的方法是通过调用CSliderCtrl类的Create函数,指定滑动条的风格、位置和大小等参数。

之后,可以使用CSliderCtrl类的成员函数来设置滑动条的范围、当前位置和事件处理程序等。

7. Progress控件:Progress控件用于显示进度条。

创建Progress 控件的方法是通过调用CProgressCtrl类的Create函数,指定进度条的风格、位置和大小等参数。

之后,可以使用CProgressCtrl类的成员函数来设置进度条的范围、当前位置和事件处理程序等。

8. Tree Control控件:Tree Control控件用于显示树形结构。

MFC 教程 第10章 常用控件1

MFC 教程 第10章 常用控件1

11.4.2列表框的基本操作
1、添加列表项
CListBox类成员函数AddString 和 InsertString向列表框增加列表项,函数 原型: int AddString( LPCTSTR lpszItem ); int InsertString( int nIndex, LPCTSTR lpszItem );
33
nIndexStart指定查找的开始位置。若为-1,从头到尾查找,查到后,
4、列表框的单项选择
当选中列表框中某个列表项,用户可以使用 CListBox::GetCurSel来获取这个结果,与该函 数相对应的CListBox::SetCurSel 函数是用来设 定某个列表项呈选中状态(高亮显示)。
键或单击下拉箭头隐藏列表框时发送此消息
CBN_SELCHANGE 组合框中的当前选择项将要改变时发 送此消息
40
例 编写一个单文档应用程序ExmpCombo,执行“测试控件| 组合框”菜单命令时打开一个对话框,初始的对话框有一个 用于显示标准控件名的组合框,当用户在组合框下拉的列表 框中选择一个控件时,该控件将显示在对话框的右部。当用 户在组合框的编辑框中输入一个列表项并单击“应用”按钮, 一个指定标题的静态文本控件将出现在对话框的右部。
36
例 编写一个对话框应用程ExmpList,对话框中有 一个列表框,当用户单击列表框中的一个列表项 (一个国家)时,在四个编辑框分别显示指定国家 的名称、首都、面积和人口。单击“添加”按钮时, “国家”编辑框中的文本将被添加到列表框中;单 击“删除”按钮时,当前的列表项将被删除。
37
11.5组合框
22
成员函数SetPos和SetRange设置旋转按钮控件 的当前位置和范围,原型: int SetPos( int nPos ); void SetRange( int nLower, int nUpper ); nPos表示控件的新位置。nLower 和 nUpper 表示控件的上限和下限。 成员函数GetPos和GetRange用来获取旋转按 钮控件的当前位置和范围。

VC++6.0MFC常用控件

VC++6.0MFC常用控件

VC++6.0MFC常用控件一般控件可用/不可用EnableWindow(TRUE);EnableWindow(FALSE);1、Static Text------------静态控件--类CStatic取值/赋值(变量类型为Control)m_lbl.GetWindowT ext(string);m_lbl.SetWindowT ext(string);2、Edit Box---------------编辑控件--类CEdit取值/赋值m_txt.GetWindowT ext(string);m_txt.SetWindowT ext(string);3、Check Box------------复选控件--类CButton(1)设置选中/未选中m_chk.SetCheck(BST_CHECKED);m_chk.SetCheck(BST_UNCHECKED);(2)判断是否选中intnCur = m_chk.GetCheck();nCur取值为BST_CHECKED/BST_UNCHECKED。

4、Radio Box------------单选控件--类CButton(1)默认选中第一项m_radio.SetCheck(BST_CHECKED);(2)选中组中任一项CWnd::CheckRadioButtonSelects (adds a check mark to) a given radio button in a group and clears (removes a check mark from) all other radio buttons in the group.void CheckRadioButton(int nIDFirstButton, int nIDLastButton, int nIDCheckButton); ParametersnIDFirstButtonSpecifies the integer identifier of the first radio button in the group.nIDLastButtonSpecifies the integer identifier of the last radio button in the group.nIDCheckButtonSpecifies the integer identifier of the radio button to be checked.(3)判断哪一项被选中CWnd::GetCheckedRadioButtonRetrieves the ID of the currently checked radio button in the specified group.int GetCheckedRadioButton(int nIDFirstButton, int nIDLastButton);ParametersnIDFirstButtonSpecifies the integer identifier of the first radio button in the group.nIDLastButtonSpecifies the integer identifier of the last radio button in the group.Return ValueID of the checked radio button, or 0 if none is selected.(4)控件变量类型为Value时,可通过给int型变量赋值0、1、2...选中第1、2、3...个选项。

2019年MFC应用程序设计中的常用控件

2019年MFC应用程序设计中的常用控件

安康学院电子与信息工程学院实验报告一、实验目的:掌握利用MFC进行Windows应用程序设计时,常用控件的基本方法。

二、实验题目内容及要求:1. 编写一个用于进行成绩计算的程序。

具体要求如下:界面中显示五个裁判所给出的等级制成绩(每个裁判利用一组单选按钮进行打分,成绩分为“优秀”、“良好”、“中等”、“及格”、“不及格”的档次),单击界面中的“计算”按钮之后,计算出百分制的平均成绩显示在界面中的一个文本框中,在计算时,每个档次的成绩对应的百分制成绩为:“优秀”——95分“良好”——85分“中等”——75分“及格”——65分“不及格”——45分要求程序的运行界面自主设计,在完成上述基本功能前提下,可以进一步进行功能扩展。

代码#include""#include""#include""#include""#ifdef_DEBUG#define new DEBUG_NEW#endifclass CAboutDlg : public CDialogEx{public:CAboutDlg();#ifdef AFX_DESIGN_TIMEenum { IDD = IDD_ABOUTBOX };#endifprotected:virtual void DoDataExchange(CDataExchange* pDX);protected:DECLARE_MESSAGE_MAP()};CAboutDlg::CAboutDlg() : CDialogEx(IDD_ABOUTBOX){}void CAboutDlg::DoDataExchange(CDataExchange* pDX){CDialogEx::DoDataExchange(pDX);}BEGIN_MESSAGE_MAP(CAboutDlg, CDialogEx)END_MESSAGE_MAP()建一个简单的调色板程序,程序界面中可以利用滚动条进行红、绿、蓝三种颜色分量值的调整,也可以直接在文本框中输入红、绿、蓝三种颜色分量值,在颜色分量值调整变化的同时,变化的颜色效果通过一个圆形色块进行现式。

MFC控件使用说明

MFC控件使用说明

MFC控件使用说明MFC(Microsoft Foundation Class)是一套面向C++开发的框架,用于快速开发图形用户界面(GUI)应用程序。

MFC提供了一套丰富的控件(Controls),用于实现各种功能和交互效果。

本文将介绍一些常用的MFC控件的使用说明。

1. Button 控件:Button控件用于显示一个按钮,用户点击按钮时会触发相应的事件处理函数。

使用方式如下:-在对话框资源中添加一个按钮控件,并为其设置ID号。

- 在对话框类的变量中声明按钮控件的成员变量,使用CButton类型。

- 在OnInitDialog函数中使用GetDlgItem函数获取按钮控件的指针,并使用它调用相应的函数,如SetWindowText设置按钮的文本内容。

3. List Box 控件:List Box控件用于显示一个列表,用户可以选择其中的项。

使用方式如下:-在对话框资源中添加一个列表框控件,并为其设置ID号。

- 在对话框类的变量中声明列表框控件的成员变量,使用CListBox类型。

- 在OnInitDialog函数中使用GetDlgItem函数获取列表框控件的指针,并使用它调用相应的函数,如AddString添加项,SetCurSel设置选中项。

-在对话框资源中添加一个组合框控件,并为其设置ID号。

- 在OnInitDialog函数中使用GetDlgItem函数获取组合框控件的指针,并使用它调用相应的函数,如AddString添加项,SetCurSel设置选中项。

5. Check Box 控件:Check Box控件用于显示一个复选框,用户可以选中或取消选中。

-在对话框资源中添加一个复选框控件,并为其设置ID号。

- 在对话框类的变量中声明复选框控件的成员变量,使用CButton类型。

- 在OnInitDialog函数中使用GetDlgItem函数获取复选框控件的指针,并使用它调用相应的函数,如SetCheck设置选中状态。

mfc基本控件

mfc基本控件

mfc基本控件
在MFC(Microsoft Foundation Classes)中,有许多基本的控件可用于创建用户界面。

以下列出了一些常见的MFC基本控件:
1. CButton:按钮控件,用于响应用户的点击操作。

2. CEdit:编辑框控件,用于显示和编辑文本。

3. CStatic:静态文本控件,用于显示静态文本内容。

4. CListBox:列表框控件,用于显示列表并允许用户选择其中的项。

5. CComboBox:组合框控件,结合了文本框和下拉列表框的功能。

6. CSliderCtrl:滑块控件,用于表示一个范围,用户可以通过拖动滑块选择值。

7. CProgressCtrl:进度条控件,用于显示任务或操作的进度。

8. CScrollBar:滚动条控件,用于使用滚动条浏览内容。

9. CTreeViewCtrl:树视图控件,用于显示树形结构的数据。

10. CListViewCtrl:列表视图控件,用于以表格形式显示数据。

这只是一些常见的MFC基本控件示例,MFC还提供了其他许多控件和自定义控件的扩展功能。

通过使用这些基本控件,您可以构建丰富的用户界面并与用户进行交互。

MFC常用控件

MFC常用控件

MFC常⽤控件按钮控件按钮控件包括命令按钮(Button)、单选按钮(Radio Button)和复选框(Check Box)等。

按钮控件会向⽗窗⼝发送通知消息,最常⽤的通知消息莫过于BN_CLICKED和BN_DOUBLECLICKED了。

⽤户在按钮上单击⿏标时会向⽗窗⼝发送BN_CLICKED消息,双击⿏标时发送BN_DOUBLECLICKED消息。

命令按钮(Button)在⼀个对话框中,Button可以定义⼀个默认按钮,这只要选中按钮属性中的“Default”选项。

如果在对话框活动的时候按下了Enter键,则等同于单击了默认按钮。

void CWindowDlg::OnBnClickedBtnTest1(){MessageBox(L"提⽰1");}void CWindowDlg::OnBnClickedBtnTest2(){MessageBox(L"默认按钮属性设置为true");}//测试2按钮的默认属性设置为true,当在对话框中点击enter键时,弹出对话框:默认按钮属性设置为true动态⽣成⼀个Button控件的⽅式如下:头⽂件中定义CButton对象CButton m_btnTest1;执⾏CButton::Create 创建⼀个CButton对象:BOOL Create( LPCTSTR lpszCaption, DWORD dwStyle, const RECT& rect, CWnd* pParentWnd, UINT nID );int CWindowDlg::OnCreate(LPCREATESTRUCT lpCreateStruct){m_btnTest1.Create(L"哈哈哈", WS_CHILD | WS_VISIBLE | BS_PUSHBUTTON, CRect(20, 100, 100, 160), this, IDC_BTN_HELLO1);//pParentWnd指⽰拥有按钮的⽗窗⼝(this为当前对话框对象),不能为NULL;//nID指定与按钮关联的ID号,⽤于按钮控件的事件处理( IDC_BTN_HELLO1)}stdadx.h中定义IDC_BTN_HELLO1宏#define IDC_BTN_HELLO1 1000运⾏后对话框显⽰的Button按钮结果如下:如果想让按钮有其他动作,⽐如当⿏标移动到按钮上时,按钮⽂本信息会变化。

MFC常用控件

MFC常用控件

精选2021版课件
7
CDialog类提供的函数成员
函数成员名
功能
Cdialog 构造Cdialog对象
Create 初始化CDialog对象
CreateIndirect 从内存中的对话框模板建立无模式对话 框
DoModal 显示有模式对话框
EndDialog
关闭有模式对话框
GotoDlgCtrl 把焦点移到对话框中指定的控件
精选2021版课件
14
精选2021版课件
15
列表框的基本操作
1.通用方法
通用方法用来获得和设置列表框数据的 值和属性,
所有的CListBox列表框,包括单选列表 框、多选列表框和自绘列表框等都有这 些方法。
精选2021版课件
16
2、单项选择特定方法 列表框的默认模式是单选项模式;
所有的通用方法均适用于单选项列表框。
精选2021版课件
30
使用CFileDialog对话框的步骤如下: 1.创建CFileDialog对象, CFileDialog的构造函数如下: CFileDialog( BOOL bOpenFileDialog, LPCTSTR lpszDefExt = NULL, LPCTSTR lpszFileName = NULL, DWORD dwFlags = OFN_HIDEREADONLY |
UpdateData(FALSE)将数据传送到对话框中,缺省的调用 发生在对话框的OnInitDialog( )创建一个有模式对话 框时。
用户可以在任何时候调用UpdateData( )进行数据交换, 该函数参数缺省值为TRUE。
示例:
显示Edit控件内容的两种方式
精选2021版课件

MFC常用控件使用

MFC常用控件使用

使用Windows标准控件我们在前面曾提到过,控件是一些行为标准化了的窗口,一般用于对话框或其它窗口中充当与用户交互的元素。

在Visual C++中,可以使用的控件分成三类:(1) Windows标准控件Windows标准控件由Windows操作系统提供,在Windows 95中还提供了一些新增的控件。

所有这些控件对象都是可编程的,我们可以使用Visual C++提供的对话框编辑器把它们添加到对话框中。

Microsoft基础类库(MFC)提供了封装这些控件的类,它们列于表6.1。

表6.1 Windows标准控件控件 MFC类 描述动画 CAnimateCtrl 显示连续的AVI视频剪辑按钮 CButton 用来产生某种行为的按钮,以及复选框、单选钮和组框组合框 CComboBox 编辑框和列表框的组合编辑框 CEdit 用于键入文本标题头 CHeaderCtrl 位于某一行文本之上的按钮,可用来控制显示文件的宽度热键 CHotKeyCtrl 用于通过按下某一组合键来很快的执行某些常用的操作图象列表 CImageList 一系列图象(典型情况下是一系列图标或位图)的集合。

图象列表本身不是一种控件,它常常是和其它控件一起工作,为其它控件提供所用的图象列表 列表 CListCtrl 显示文本及其图标列表的窗口列表框 CListBox 包括一系列字符串的列表进度 CProgressCtrl 用于在一较长操作中提示用户所完成的进度多格式文本编辑 CRichEditCtrl 提供可设置字符和段落格式的文本编辑的窗口滚动条 CScrollBar 为对话框提供控件形式的滚动条滑块 CSliderCtrl 包括一个有可选标记的滑块的窗口旋转按钮 CSpinButtonCtrl提供一对可用于增减某个值的箭头静态文本 CStatic 常用于为其它控件提供标签状态条 CStatusBarCtrl 用于显示状态信息的窗口,同MFC类CStatusBar类似续表6.1 控件 MFC类 描述选项卡 CTabCtrl 在选项卡对话框或属性页中提供具有类似笔记本中使用的分隔标签的外观的选项卡工具条 CToolBarCtrl 具有一系列命令生成按钮的窗口,同MFC类CToolBar类似工具提示 CToolTipCtrl 一个小的弹出式窗口,用于提供对工具条按钮或其它控件功能的简单描述树 CTreeCtrl 用于显示一系列的项的继承结构前面提到过,在MFC中,类CWnd是所有窗口类的基类,很自然的,它也是所有控件类的基类。

MFC常用控件样式一览

MFC常用控件样式一览

MFC常用控件样式一览CStatic样式从CWnd继承来的样式:WS_CHILD CStatic所必须的。

WS_VISIBLE 表示该控制对用户应该是可见的。

WS_DISABLED 表示该控制拒绝接受用户事件。

WS_BORDER 控制的文本区域带有边框。

CStatic固有的样式:SS_BLACKFRAME 该控制区域以矩形边界显示。

颜色与窗口框架相同。

SS_BLACKRECT 该控制以填充的矩形显示。

颜色与当前的窗口框架相同。

SS_CENTER 文本居中。

SS_GRAYFRAME 控制以矩形边框方式显示。

颜色与当前桌面相同。

SS_GRAYRECT 该控制以填充的矩形显示。

颜色与当前的桌面相同。

SS_ICON 控制以图标形式显示。

文本作为图标在资源文件的名称。

rect参数只控制位置。

SS_LEFT 文本居左显示。

文字可回绕。

SS_LEFTNOWORDWRAP 文本居左显示。

多余的文字被剪裁。

SS_NOPREFIX 表示字符串中的"&"字符不表示为加速前缀。

SS_RIGHT 文本居右显示。

文字可回绕。

SS_SIMPLE 只简单的显示一行文本。

任何CTLCOLOR信息都被其父窗口忽略。

SS_USERITEM 用户定义项。

SS_WHITEFRAME 控制以矩形边框方式显示。

颜色与当前窗口背景颜色相同。

SS_WHITERECT 控制以填充矩形方式显示。

颜色与当前窗口背景颜色相同。

CButton样式从CWnd继承来的样式:WS_CHILDWS_VISUBLEWS_BORDERCButton的固有样式:BS_AUTOCHECKBOX 检查框,按钮的状态会自动改变Same as a check box, except that a check markappears in the check box when the user selects the box; the check markdisappears the next time the user selects the box.BS_AUTORADIOBUTTON 圆形选择按钮,按钮的状态会自动改变 Same as a radio button, except thatwhen the user selects it, the button automatically highlights itself and removesthe selection from any other radio buttons with the same style in the samegroup.BS_AUTO3STATE 允许按钮有三种状态即:选中,未选中,未定Same as a three-state check box, except that the box changes its state when the user selects it.BS_CHECKBOX 检查框Creates a small square that has text displayed to its right(unless this style is combined with the BS_LEFTTEXT style)BS_DEFPUSHBUTTON 默认普通按钮 Creates a button that has a heavy black border. Theuser can select this button by pressing the ENTER key. Thisstyle enables theuser to quickly select the most likely option (the default option).BS_LEFTTEXT 左对齐文字When combined with a radio-button or check-box style, thetext appears on the left side of the radio button or check box.BS_OWNERDRAW 自绘按钮 Creates an owner-drawn button. The framework calls theDrawItem member function when a visual aspect of the button has changed. Thisstyle must be set when using the CBitmapButton class.BS_PUSHBUTTON 普通按钮Creates a pushbutton that posts a WM_COMMAND message tothe owner window when the user selects the button.BS_RADIOBUTTON 圆形选择按钮Creates a small circle that has text displayed to itsright (unless this style is combined with the BS_LEFTTEXT style). Radio buttonsare usually used in groups of related but mutually exclusive choices.BS_3STATE 允许按钮有三种状态即:选中,未选中,未定Same as a check box, except that the box canbe dimmed as well as checked. The dimmed state typically is used to show that acheck box has been disabled.rect为窗口所占据的矩形区域,pParentWnd为父窗口指针,nID 为该窗口的ID值。

MFC常用控件(一)

MFC常用控件(一)

MFC常用控件(一)1.1 传统控件的控件通知消息控件通过向父窗口发送控件通知消息来表明发生了某种事件.例如,当用户在按钮上单击鼠标时,按钮控件会向父窗口发送BN_CLICKED消息.传统控件的通知消息实际上是通过WM_COMMAND消息发给父窗口的(滚动条除外),在该消息的wParam中含有通知消息码(如BN_CLICKED)和控件的ID,在lParam中则包含了控件的句柄.利用ClassWizard可以很容易地为控件通知消息加入消息映射和消息处理函数,这在上一章中已经演示过了.传统控件的消息映射宏是ON_XXXX,其中XXXX表示通知消息码,如BN_CLICKED.ON_XXXX消息映射如下所示,该宏有两个参数,一个是控件的ID,一个是消息处理函数名.ON_XXXX(nID, memberFxn)消息处理函数的声明应该有如下形式:afx_msg void memberFxn( );例如,某按钮的BN_CLICKED消息的消息映射及其处理函数的声明如下所示ON_BN_CLICKED(IDC_ADD,OnAdd)afx_msg void OnAdd( );有时,为了处理方便,需要把多个ID连续的控件发出的相同消息映射到同一个处理函数上.这就要用到ON_CONTROL_RANGE 宏.ON_CONTROL_RANGE消息映射宏的第一个参数是控件消息码,第二和第三个参数分别指明了一组连续的控件ID中的头一个和最后一个ID,最后一个参数是消息处理函数名。

例如,要处理一组单选按钮发出的BN_CLICKED消息,相应的消息映射如下所示:ON_CONTROL_RANGE(BN_CLICKED, IDC_FIRST, IDC_LAST, OnRadioClicked)函数OnRadioClicked的声明如下,该函数比上面的OnAdd多了一个参数nID以说明发送通知消息的控件ID.afx_msg void OnRadioClicked(UINT nID);ClassWizard不支持ON_CONTROL_RANGE宏,所以需要手工建立消息映射和消息处理函数.6.1.2 静态控件静态控件包括静态正文(Static Text)和图片控件(Picture)。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

安康学院电子与信息工程学院实验报告一、实验目的:掌握利用MFC进行Windows应用程序设计时,常用控件的基本方法。

二、实验题目内容及要求:1. 编写一个用于进行成绩计算的程序。

具体要求如下:界面中显示五个裁判所给出的等级制成绩(每个裁判利用一组单选按钮进行打分,成绩分为“优秀”、“良好”、“中等”、“及格”、“不及格”的档次),单击界面中的“计算”按钮之后,计算出百分制的平均成绩显示在界面中的一个文本框中,在计算时,每个档次的成绩对应的百分制成绩为:“优秀”——95分“良好”——85分“中等”——75分“及格”——65分“不及格”——45分要求程序的运行界面自主设计,在完成上述基本功能前提下,可以进一步进行功能扩展。

代码#include"stdafx.h"#include"MFCApplication4.h"#include"MFCApplication4Dlg.h" #include"afxdialogex.h"#ifdef_DEBUG#define new DEBUG_NEW#endif class CAboutDlg : public CDialogEx {public:CAboutDlg();#ifdef AFX_DESIGN_TIMEenum { IDD = IDD_ABOUTBOX }; #endifprotected:virtual voidDoDataExchange(CDataExchange* pDX); protected:DECLARE_MESSAGE_MAP()};CAboutDlg::CAboutDlg() :CDialogEx(IDD_ABOUTBOX){}voidCAboutDlg::DoDataExchange(CDataExchange* pDX){CDialogEx::DoDataExchange(pDX);}BEGIN_MESSAGE_MAP(CAboutDlg, CDialogEx) END_MESSAGE_MAP()// CMFCApplication4Dlg 对话框CMFCApplication4Dlg::CMFCApplication4Dlg( CWnd* pParent/*=NULL*/):CDialogEx(IDD_MFCAPPLICATION4_DIALOG, pParent), m_po1(0), m_po2(0), m_po3(0), m_po4(0), m_po5(0), m_result(0){m_hIcon =AfxGetApp()->LoadIcon(IDR_MAINFRAME);}voidCMFCApplication4Dlg::DoDataExchange(CData Exchange* pDX){CDialogEx::DoDataExchange(pDX);DDX_Radio(pDX, IDC_RADIO1, m_po1);DDX_Radio(pDX, IDC_RADIO6, m_po2);DDX_Radio(pDX, IDC_RADIO11, m_po3);DDX_Radio(pDX, IDC_RADIO16, m_po4);DDX_Radio(pDX, IDC_RADIO21, m_po5);DDX_Text(pDX, IDC_EDIT1, m_result); }BEGIN_MESSAGE_MAP(CMFCApplication4Dlg, CDialogEx)ON_WM_SYSCOMMAND()ON_WM_PAINT()ON_WM_QUERYDRAGICON()ON_BN_CLICKED(IDC_RADIO1,&CMFCApplication4Dlg::OnBnClickedRadio1) ON_BN_CLICKED(IDC_RADIO6,&CMFCApplication4Dlg::OnBnClickedRadio6) ON_BN_CLICKED(IDC_BUTTON1,&CMFCApplication4Dlg::OnBnClickedButton1) ON_EN_CHANGE(IDC_EDIT1,&CMFCApplication4Dlg::OnEnChangeEdit1) END_MESSAGE_MAP()// CMFCApplication4Dlg 消息处理程序BOOL CMFCApplication4Dlg::OnInitDialog() {CDialogEx::OnInitDialog();ASSERT((IDM_ABOUTBOX & 0xFFF0) == IDM_ABOUTBOX);ASSERT(IDM_ABOUTBOX < 0xF000);CMenu* pSysMenu =GetSystemMenu(FALSE);if (pSysMenu != NULL){BOOL bNameValid;CString strAboutMenu;bNameValid =strAboutMenu.LoadString(IDS_ABOUTBOX);ASSERT(bNameValid);if (!strAboutMenu.IsEmpty()){pSysMenu->AppendMenu(MF_SEPARATOR);pSysMenu->AppendMenu(MF_STRING,IDM_ABOUTBOX, strAboutMenu);}}SetIcon(m_hIcon, TRUE);SetIcon(m_hIcon, FALSE);return TRUE; }voidCMFCApplication4Dlg::OnSysCommand(UINT nID, LPARAM lParam){if ((nID & 0xFFF0) == IDM_ABOUTBOX){CAboutDlg dlgAbout;dlgAbout.DoModal();}else{CDialogEx::OnSysCommand(nID, lParam);}}void CMFCApplication4Dlg::OnPaint(){if (IsIconic()){CPaintDC dc(this);SendMessage(WM_ICONERASEBKGND, reinterpret_cast<WPARAM>(dc.GetSafeHdc()), 0);int cxIcon =GetSystemMetrics(SM_CXICON);int cyIcon =GetSystemMetrics(SM_CYICON);CRect rect;GetClientRect(&rect);int x = (rect.Width() - cxIcon + 1) / 2;int y = (rect.Height() - cyIcon + 1) / 2;dc.DrawIcon(x, y, m_hIcon);}else{CDialogEx::OnPaint();}}HCURSORCMFCApplication4Dlg::OnQueryDragIcon() {return static_cast<HCURSOR>(m_hIcon); }int x1,x2,x3,x4,x5;voidCMFCApplication4Dlg::OnBnClickedRadio1() {switch (m_po1){case 0:x1 = 95;break;case 1:x1 = 85;break;case 2:x1 = 75;break;case 3:x1 = 65;break;case 4:x1 = 45;break;}}voidCMFCApplication4Dlg::OnBnClickedRadio6(){switch (m_po2){case 0:x2 = 95;break;case 1:x2 = 85;break;case 2:x2 = 75;break;case 3:x2 = 65;break;case 4:x2 = 45;break;}}voidCMFCApplication4Dlg::OnBnClickedButton1() {UpdateData(TRUE);switch (m_po1){case 0:x1 = 95;break;case 1:x1 = 85;break;case 2:x1 = 75;break;case 3:x1 = 65;break;case 4:x1 = 45;break; }switch (m_po2) {case 0:x2 = 95;break; case 1:x2 = 85;break; case 2:x2 = 75;break; case 3:x2 = 65;break; case 4:x2 = 45;break;}switch (m_po3) {case 0:x3 = 95;break; case 1:x3= 85;break; case 2:x3 = 75;break; case 3:x3 = 65;break; case 4:x3 = 45;break;}switch (m_po4) {case 0:x4 = 95;break; case 1:x4 = 85;break; case 2:x4 = 75;break; case 3:x4 = 65;break; case 4:x4 = 45;break;}switch (m_po5) {case 0:x5 = 95;break; case 1:x5 = 85;break; case 2:x5 = 75;break;case 3:x5 = 65;break;case 4:x5 = 45;break;}m_result = (x1 + x2+x3+x4+x5)/5;UpdateData(FALSE);}voidCMFCApplication4Dlg::OnEnChangeEdit1() {}运行结果:2.创建一个简单的调色板程序,程序界面中可以利用滚动条进行红、绿、蓝三种颜色分量值的调整,也可以直接在文本框中输入红、绿、蓝三种颜色分量值,在颜色分量值调整变化的同时,变化的颜色效果通过一个圆形色块进行现式。

在完成上述基本功能前提下,可以进一步进行功能扩展。

代码:#include"stdafx.h"#include"MFCApplication5.h"#include"MFCApplication5Dlg.h"#include"afxdialogex.h"#ifdef_DEBUG#define new DEBUG_NEW#endifclass CAboutDlg : public CDialogEx{public:CAboutDlg();#ifdef AFX_DESIGN_TIMEenum { IDD = IDD_ABOUTBOX };#endifprotected:virtual voidDoDataExchange(CDataExchange* pDX); protected:DECLARE_MESSAGE_MAP()};CAboutDlg::CAboutDlg() :CDialogEx(IDD_ABOUTBOX){}voidCAboutDlg::DoDataExchange(CDataExchange* pDX){CDialogEx::DoDataExchange(pDX);}BEGIN_MESSAGE_MAP(CAboutDlg, CDialogEx) END_MESSAGE_MAP() CMFCApplication5Dlg::CMFCApplication5Dlg( CWnd* pParent:CDialogEx(IDD_MFCAPPLICATION5_DIALOG, pParent), m_red(0), m_yellow(0), m_blue(0){m_hIcon =AfxGetApp()->LoadIcon(IDR_MAINFRAME);}voidCMFCApplication5Dlg::DoDataExchange(CData Exchange* pDX){CDialogEx::DoDataExchange(pDX);DDX_Control(pDX, IDC_SCROLLBAR3,m_scr1);DDX_Control(pDX, IDC_SCROLLBAR1,m_scr2);DDX_Control(pDX, IDC_SCROLLBAR2,m_scr3);DDX_Text(pDX, IDC_EDIT1, m_red);DDX_Text(pDX, IDC_EDIT2, m_yellow);DDX_Text(pDX, IDC_EDIT3, m_blue);}BEGIN_MESSAGE_MAP(CMFCApplication5Dlg, CDialogEx)ON_WM_SYSCOMMAND()ON_WM_PAINT()ON_WM_QUERYDRAGICON()ON_WM_VSCROLL()ON_BN_CLICKED(IDC_BUTTON1,&CMFCApplication5Dlg::OnBnClickedButton1) ON_BN_CLICKED(IDC_BUTTON2,&CMFCApplication5Dlg::OnBnClickedButton2) END_MESSAGE_MAP()BOOL CMFCApplication5Dlg::OnInitDialog() {CDialogEx::OnInitDialog();ASSERT((IDM_ABOUTBOX & 0xFFF0) == IDM_ABOUTBOX);ASSERT(IDM_ABOUTBOX < 0xF000);CMenu* pSysMenu =GetSystemMenu(FALSE);if (pSysMenu != NULL){BOOL bNameValid;CString strAboutMenu;bNameValid =strAboutMenu.LoadString(IDS_ABOUTBOX);ASSERT(bNameValid);if (!strAboutMenu.IsEmpty()){pSysMenu->AppendMenu(MF_SEPARATOR);pSysMenu->AppendMenu(MF_STRING,IDM_ABOUTBOX, strAboutMenu);}}SetIcon(m_hIcon, TRUE);SetIcon(m_hIcon, FALSE);m_scr1.SetScrollRange(0, 255);m_scr1.SetScrollPos(0);m_scr2.SetScrollRange(0, 255);m_scr2.SetScrollPos(0);m_scr3.SetScrollRange(0, 255);m_scr3.SetScrollPos(0);return TRUE; /}voidCMFCApplication5Dlg::OnSysCommand(UINT nID, LPARAM lParam){if ((nID & 0xFFF0) == IDM_ABOUTBOX){CAboutDlg dlgAbout;dlgAbout.DoModal();}else{CDialogEx::OnSysCommand(nID, lParam);}}void CMFCApplication5Dlg::OnPaint(){if (IsIconic()){CPaintDC dc(this);SendMessage(WM_ICONERASEBKGND, reinterpret_cast<WPARAM>(dc.GetSafeHdc()), 0);int cxIcon =GetSystemMetrics(SM_CXICON);int cyIcon =GetSystemMetrics(SM_CYICON);CRect rect;GetClientRect(&rect);int x = (rect.Width() - cxIcon + 1) / 2;int y = (rect.Height() - cyIcon + 1) / 2;// 绘制图标dc.DrawIcon(x, y, m_hIcon);}else{CDialogEx::OnPaint();}}HCURSORCMFCApplication5Dlg::OnQueryDragIcon() {return static_cast<HCURSOR>(m_hIcon); }int x1, x2, x3;void CMFCApplication5Dlg::OnVScroll(UINT nSBCode, UINT nPos, CScrollBar* pScrollBar) {int iNowPos;if (pScrollBar == &m_scr1){switch (nSBCode){case SB_THUMBTRACK:m_scr1.SetScrollPos(nPos);x1 = m_scr1.GetScrollPos();case SB_LINEDOWN:iNowPos = m_scr1.GetScrollPos();iNowPos = iNowPos + 1;if (iNowPos > 255)iNowPos = 255;m_scr1.SetScrollPos(iNowPos);x1 = m_scr1.GetScrollPos();break;case SB_LINEUP:iNowPos = m_scr1.GetScrollPos();iNowPos = iNowPos - 1;if (iNowPos < 0)iNowPos = 0;m_scr1.SetScrollPos(iNowPos);x1 = m_scr1.GetScrollPos();break;case SB_PAGEDOWN:iNowPos =m_scr1.GetScrollPos();iNowPos = iNowPos + 3;if (iNowPos > 255)iNowPos = 255;m_scr1.SetScrollPos(iNowPos);x1 = m_scr1.GetScrollPos();break;case SB_PAGEUP:iNowPos = m_scr1.GetScrollPos();iNowPos = iNowPos - 3;if (iNowPos < 0)iNowPos = 0;m_scr1.SetScrollPos(iNowPos);x1 = m_scr1.GetScrollPos();break;}}else if (pScrollBar == &m_scr2){switch (nSBCode){case SB_THUMBTRACK:m_scr2.SetScrollPos(nPos);x2 = m_scr2.GetScrollPos();case SB_LINEDOWN:iNowPos =m_scr2.GetScrollPos();iNowPos = iNowPos + 1;if (iNowPos > 255)iNowPos = 255;m_scr2.SetScrollPos(iNowPos);x2 = m_scr2.GetScrollPos();break;case SB_LINEUP:iNowPos =m_scr2.GetScrollPos();iNowPos = iNowPos - 1;if (iNowPos < 0)iNowPos = 0;m_scr2.SetScrollPos(iNowPos);x2 = m_scr2.GetScrollPos();break;case SB_PAGEDOWN:iNowPos =m_scr2.GetScrollPos();iNowPos = iNowPos + 3;if (iNowPos > 255)iNowPos = 255;m_scr2.SetScrollPos(iNowPos);x2 = m_scr2.GetScrollPos();break;case SB_PAGEUP:iNowPos =m_scr1.GetScrollPos();iNowPos = iNowPos - 3;if (iNowPos < 0)iNowPos = 0;m_scr2.SetScrollPos(iNowPos);x2 = m_scr2.GetScrollPos();break;}}else if (pScrollBar == &m_scr3){switch (nSBCode){case SB_THUMBTRACK:m_scr3.SetScrollPos(nPos);x3 = m_scr3.GetScrollPos();case SB_LINEDOWN:iNowPos =m_scr3.GetScrollPos();iNowPos = iNowPos + 1;if (iNowPos > 255)iNowPos = 255;m_scr3.SetScrollPos(iNowPos);x3 = m_scr3.GetScrollPos();break;case SB_LINEUP:iNowPos =m_scr3.GetScrollPos();iNowPos = iNowPos - 1;if (iNowPos < 0)iNowPos = 0;m_scr3.SetScrollPos(iNowPos);x3 = m_scr3.GetScrollPos();break;case SB_PAGEDOWN:iNowPos =m_scr3.GetScrollPos();iNowPos = iNowPos + 3;if (iNowPos > 255)iNowPos = 255;m_scr3.SetScrollPos(iNowPos);x3 = m_scr3.GetScrollPos();break;case SB_PAGEUP:iNowPos =m_scr3.GetScrollPos();iNowPos = iNowPos - 3;if (iNowPos < 0)iNowPos = 0;m_scr3.SetScrollPos(iNowPos);x3 = m_scr3.GetScrollPos();break;}}CDialogEx::OnVScroll(nSBCode, nPos, pScrollBar);}voidCMFCApplication5Dlg::OnBnClickedButton1() {// TODO: 在此添加控件通知处理程序代码CClientDC hDC(this);CPen *penold, pennew;CBrush*brushold, brushnew, brushback;CRect rectclient;GetClientRect(&rectclient);CRect rectdraw(rectclient.right - 170, 10, rectclient.right - 10, 170);brushback.CreateSolidBrush(RGB(x1, x2, x3));brushold =hDC.SelectObject(&brushback);penold = hDC.SelectObject(&pennew);hDC.SelectObject(&brushnew);hDC.Ellipse(rectdraw);hDC.SelectObject(penold);hDC.SelectObject(brushold);}voidCMFCApplication5Dlg::OnBnClickedButton2() {// TODO: 在此添加控件通知处理程序代码UpdateData(TRUE);CClientDC hDC(this);CPen *penold, pennew;CBrush*brushold, brushnew, brushback;CRect rectclient;GetClientRect(&rectclient);CRect rectdraw(rectclient.right - 170, 10, rectclient.right - 10, 170);brushback.CreateSolidBrush(RGB(m_red, m_yellow, m_blue));brushold =hDC.SelectObject(&brushback);penold = hDC.SelectObject(&pennew);hDC.SelectObject(&brushnew);hDC.Ellipse(rectdraw);hDC.SelectObject(penold);hDC.SelectObject(brushold);UpdateData(FALSE);}运行结果:3.完成教材第255页习题9-17。

相关文档
最新文档