mfc学习小范例按钮控件的使用.docx
- 文档编号:25790382
- 上传时间:2023-06-14
- 格式:DOCX
- 页数:22
- 大小:110.82KB
mfc学习小范例按钮控件的使用.docx
《mfc学习小范例按钮控件的使用.docx》由会员分享,可在线阅读,更多相关《mfc学习小范例按钮控件的使用.docx(22页珍藏版)》请在冰豆网上搜索。
mfc学习小范例按钮控件的使用
我们通常知道按钮控件是分两种的,一种是多选按钮(即复选按钮),另一种是单选按钮,要实现这些并不难,你只需要知道相应控件的使用规则和C++的基础即可。
请看实现程序的截图
年龄选项当然是单选的,是圆形按钮,而爱好可以有多个,所以是复选按钮,在MFC中的控件格式是方块,此程序实现的功能是选择相应的年龄和爱好后点击确定按钮即可出现所选选项,如图所示:
我选择的年龄是15到30岁之间,爱好是聊天交友和查阅资料,此时我点击确定按钮后出现如下图示:
实现源代码如下:
按钮空间的使用.cpp
//按钮控件的使用.cpp:
定义应用程序的类行为。
//
#include"stdafx.h"
#include"按钮控件的使用.h"
#include"按钮控件的使用Dlg.h"
#ifdef_DEBUG
#definenewDEBUG_NEW
#endif
//C按钮控件的使用App
BEGIN_MESSAGE_MAP(C按钮控件的使用App,CWinApp)
ON_COMMAND(ID_HELP,&CWinApp:
:
OnHelp)
END_MESSAGE_MAP()
//C按钮控件的使用App构造
C按钮控件的使用App:
:
C按钮控件的使用App()
{
//TODO:
在此处添加构造代码,
//将所有重要的初始化放置在InitInstance中
}
//唯一的一个C按钮控件的使用App对象
C按钮控件的使用ApptheApp;
//C按钮控件的使用App初始化
BOOLC按钮控件的使用App:
:
InitInstance()
{
//如果一个运行在WindowsXP上的应用程序清单指定要
//使用ComCtl32.dll版本6或更高版本来启用可视化方式,
//则需要InitCommonControlsEx()。
否则,将无法创建窗口。
INITCOMMONCONTROLSEXInitCtrls;
InitCtrls.dwSize=sizeof(InitCtrls);
//将它设置为包括所有要在应用程序中使用的
//公共控件类。
InitCtrls.dwICC=ICC_WIN95_CLASSES;
InitCommonControlsEx(&InitCtrls);
CWinApp:
:
InitInstance();
AfxEnableControlContainer();
//标准初始化
//如果未使用这些功能并希望减小
//最终可执行文件的大小,则应移除下列
//不需要的特定初始化例程
//更改用于存储设置的注册表项
//TODO:
应适当修改该字符串,
//例如修改为公司或组织名
SetRegistryKey(_T("应用程序向导生成的本地应用程序"));
C按钮控件的使用Dlgdlg;
m_pMainWnd=&dlg;
INT_PTRnResponse=dlg.DoModal();
if(nResponse==IDOK)
{
//TODO:
在此放置处理何时用
//“确定”来关闭对话框的代码
}
elseif(nResponse==IDCANCEL)
{
//TODO:
在此放置处理何时用
//“取消”来关闭对话框的代码
}
//由于对话框已关闭,所以将返回FALSE以便退出应用程序,
//而不是启动应用程序的消息泵。
returnFALSE;
}
按钮控件的使用Dlg.cpp
//按钮控件的使用Dlg.cpp:
实现文件
//
#include"stdafx.h"
#include"按钮控件的使用.h"
#include"按钮控件的使用Dlg.h"
#ifdef_DEBUG
#definenewDEBUG_NEW
#endif
//用于应用程序“关于”菜单项的CAboutDlg对话框
classCAboutDlg:
publicCDialog
{
public:
CAboutDlg();
//对话框数据
enum{IDD=IDD_ABOUTBOX};
protected:
virtualvoidDoDataExchange(CDataExchange*pDX);//DDX/DDV支持
//实现
protected:
DECLARE_MESSAGE_MAP()
};
CAboutDlg:
:
CAboutDlg():
CDialog(CAboutDlg:
:
IDD)
{
}
voidCAboutDlg:
:
DoDataExchange(CDataExchange*pDX)
{
CDialog:
:
DoDataExchange(pDX);
}
BEGIN_MESSAGE_MAP(CAboutDlg,CDialog)
END_MESSAGE_MAP()
//C按钮控件的使用Dlg对话框
C按钮控件的使用Dlg:
:
C按钮控件的使用Dlg(CWnd*pParent/*=NULL*/)
:
CDialog(C按钮控件的使用Dlg:
:
IDD,pParent)
{
m_hIcon=AfxGetApp()->LoadIcon(IDR_MAINFRAME);
}
voidC按钮控件的使用Dlg:
:
DoDataExchange(CDataExchange*pDX)
{
CDialog:
:
DoDataExchange(pDX);
//DDX_Control(pDX,IDC_BUTTON1,m_radio1);
DDX_Control(pDX,IDC_BUTTON1,m_button);
DDX_Control(pDX,IDC_CHECK1,m_check1);
DDX_Control(pDX,IDC_CHECK2,m_check2);
DDX_Control(pDX,IDC_CHECK3,m_check3);
DDX_Control(pDX,IDC_CHECK4,m_check4);
DDX_Control(pDX,IDC_RADIO1,m_radio1);
DDX_Control(pDX,IDC_RADIO2,m_radio2);
DDX_Control(pDX,IDC_RADIO3,m_radio3);
}
BEGIN_MESSAGE_MAP(C按钮控件的使用Dlg,CDialog)
ON_WM_SYSCOMMAND()
ON_WM_PAINT()
ON_WM_QUERYDRAGICON()
//}}AFX_MSG_MAP
ON_BN_CLICKED(IDC_RADIO1,&C按钮控件的使用Dlg:
:
OnBnClickedRadio1)
ON_BN_CLICKED(IDC_BUTTON1,&C按钮控件的使用Dlg:
:
OnBnClickedButton1)
END_MESSAGE_MAP()
//C按钮控件的使用Dlg消息处理程序
BOOLC按钮控件的使用Dlg:
:
OnInitDialog()
{
CDialog:
:
OnInitDialog();
//将“关于...”菜单项添加到系统菜单中。
//IDM_ABOUTBOX必须在系统命令范围内。
ASSERT((IDM_ABOUTBOX&0xFFF0)==IDM_ABOUTBOX);
ASSERT(IDM_ABOUTBOX<0xF000);
CMenu*pSysMenu=GetSystemMenu(FALSE);
if(pSysMenu!
=NULL)
{
CStringstrAboutMenu;
strAboutMenu.LoadString(IDS_ABOUTBOX);
if(!
strAboutMenu.IsEmpty())
{
pSysMenu->AppendMenu(MF_SEPARATOR);
pSysMenu->AppendMenu(MF_STRING,IDM_ABOUTBOX,strAboutMenu);
}
}
//设置此对话框的图标。
当应用程序主窗口不是对话框时,框架将自动
//执行此操作
SetIcon(m_hIcon,TRUE);//设置大图标
SetIcon(m_hIcon,FALSE);//设置小图标
//TODO:
在此添加额外的初始化代码
returnTRUE;//除非将焦点设置到控件,否则返回TRUE
}
voidC按钮控件的使用Dlg:
:
OnSysCommand(UINTnID,LPARAMlParam)
{
if((nID&0xFFF0)==IDM_ABOUTBOX)
{
CAboutDlgdlgAbout;
dlgAbout.DoModal();
}
else
{
CDialog:
:
OnSysCommand(nID,lParam);
}
}
//如果向对话框添加最小化按钮,则需要下面的代码
//来绘制该图标。
对于使用文档/视图模型的MFC应用程序,
//这将由框架自动完成。
voidC按钮控件的使用Dlg:
:
OnPaint()
{
if(IsIconic())
{
CPaintDCdc(this);//用于绘制的设备上下文
SendMessage(WM_ICONERASEBKGND,reinterpret_cast
//使图标在工作区矩形中居中
intcxIcon=GetSystemMetrics(SM_CXICON);
intcyIcon=GetSystemMetrics(SM_CYICON);
CRectrect;
GetClientRect(&rect);
intx=(rect.Width()-cxIcon+1)/2;
inty=(rect.Height()-cyIcon+1)/2;
//绘制图标
dc.DrawIcon(x,y,m_hIcon);
}
else
{
CDialog:
:
OnPaint();
}
}
//当用户拖动最小化窗口时系统调用此函数取得光标
//显示。
HCURSORC按钮控件的使用Dlg:
:
OnQueryDragIcon()
{
returnstatic_cast
}
voidC按钮控件的使用Dlg:
:
OnBnClickedRadio1()
{
//TODO:
在此添加控件通知处理程序代码
}
voidC按钮控件的使用Dlg:
:
OnBnClickedButton1()
{
CStringstr=L"";
if(m_radio1.GetCheck()==1)
str+=L"年龄为大于30岁,";
elseif(m_radio2.GetCheck()==1)
str+=L"年龄为15到30岁之间,";
elseif(m_radio3.GetCheck()==1)
str+=L"年龄为小于15岁,";
elsestr+=L"年龄未知,";
str+=L"爱好包括:
";
if(m_check1.GetCheck()>0)
str+=L"聊天交友,";
if(m_check2.GetCheck()>0)
str+=L"查阅资料,";
if(m_check3.GetCheck()>0)
str+=L"打游戏,";
if(m_check4.GetCheck()>0)
str+=L"逛论坛";
AfxMessageBox(str);
m_button.SetWindowTextW(L"您已经按下确定按钮");//TODO:
在此添加控件通知处理程序代码
}
这些是主要的源代码,一些头文件的定义并不出现在以上的源代码中,需要的请联系我
QQ:
546190761(写好备注)
一个简单的MFC学习小程序——吹泡泡
截图示例:
这是运行这个程序之后的第一界面,其实颜色设置按钮是多余的,因为后来我在程序中加入泡泡的颜色是随机的,请看截图:
用鼠标在表框中点击即可出现如图所示大小和颜色是随机的泡泡,下面附上程序的源代码。
吹泡泡.cpp
//吹泡泡.cpp:
定义应用程序的类行为。
//
#include"stdafx.h"
#include"吹泡泡.h"
#include"吹泡泡Dlg.h"
#ifdef_DEBUG
#definenewDEBUG_NEW
#endif
//C吹泡泡App
BEGIN_MESSAGE_MAP(C吹泡泡App,CWinApp)
ON_COMMAND(ID_HELP,&CWinApp:
:
OnHelp)
END_MESSAGE_MAP()
//C吹泡泡App构造
C吹泡泡App:
:
C吹泡泡App()
{
//TODO:
在此处添加构造代码,
//将所有重要的初始化放置在InitInstance
中
}
//唯一的一个C吹泡泡App对象
C吹泡泡ApptheApp;
//C吹泡泡App初始化
BOOLC吹泡泡App:
:
InitInstance()
{
//如果一个运行在WindowsXP上的应用程序
清单指定要
//使用ComCtl32.dll版本6或更高版本来启
用可视化方式,
//则需要InitCommonControlsEx()。
否则,将
无法创建窗口。
INITCOMMONCONTROLSEXInitCtrls;
InitCtrls.dwSize=sizeof(InitCtrls);
//将它设置为包括所有要在应用程序中使用的
//公共控件类。
InitCtrls.dwICC=ICC_WIN95_CLASSES;
InitCommonControlsEx(&InitCtrls);
CWinApp:
:
InitInstance();
AfxEnableControlContainer();
//标准初始化
//如果未使用这些功能并希望减小
//最终可执行文件的大小,则应移除下列
//不需要的特定初始化例程
//更改用于存储设置的注册表项
//TODO:
应适当修改该字符串,
//例如修改为公司或组织名
SetRegistryKey(_T("应用程序向导生成的本地
应用程序"));
C吹泡泡Dlgdlg;
m_pMainWnd=&dlg;
INT_PTRnResponse=dlg.DoModal();
if(nResponse==IDOK)
{
//TODO:
在此放置处理何时用
//“确定”来关闭对话框的代码
}
elseif(nResponse==IDCANCEL)
{
//TODO:
在此放置处理何时用
//“取消”来关闭对话框的代码
}
//由于对话框已关闭,所以将返回FALSE以便
退出应用程序,
//而不是启动应用程序的消息泵。
returnFALSE;
}
吹泡泡Dlg.cpp
//吹泡泡Dlg.cpp:
实现文件
//
#include"stdafx.h"
#include"吹泡泡.h"
#include"吹泡泡Dlg.h"
#ifdef_DEBUG
#definenewDEBUG_NEW
#endif
CRectm_rectBubble[MAX_BUBBLE];
COLORREFm_colorBubble[MAX_BUBBLE];
intm_nBubbleCount;
CRectm_rectClient;
COLORREFm_colorCurrent;
//用于应用程序“关于”菜单项的CAboutDlg对话框
classCAboutDlg:
publicCDialog
{
public:
CAboutDlg();
//对话框数据
enum{IDD=IDD_ABOUTBOX};
protected:
virtualvoidDoDataExchange
(CDataExchange*pDX);//DDX/DDV支持
//实现
protected:
DECLARE_MESSAGE_MAP()
};
CAboutDlg:
:
CAboutDlg():
CDialog(CAboutDlg:
:
IDD)
{
}
voidCAboutDlg:
:
DoDataExchange(CDataExchange*
pDX)
{
CDialog:
:
DoDataExchange(pDX);
}
BEGIN_MESSAGE_MAP(CAboutDlg,CDialog)
END_MESSAGE_MAP()
//C吹泡泡Dlg对话框
C吹泡泡Dlg:
:
C吹泡泡Dlg(CWnd*pParent/*=NULL*/)
:
CDialog(C吹泡泡Dlg:
:
IDD,pParent)
{
m_hIcon=AfxGetApp()->LoadIcon
(IDR_MAINFRAME);
}
voidC吹泡泡Dlg:
:
DoDataExchange(CDataExchange*
pDX)
{
CDialog:
:
DoDataExchange(pDX);
}
BEGIN_MESSAGE_MAP(C吹泡泡Dlg,CDialog)
ON_WM_SYSCOMMAND()
ON_WM_PAINT()
ON_WM_QUERYDRAGICON()
//}}AFX_MSG_MAP
ON_WM_LBUTTONDOWN()
ON_BN_CLICKED(IDC_COLOR,&C吹泡泡
Dlg:
:
OnBnClickedColor)
END_MESSAGE_MAP()
//C吹泡泡Dlg消息处理程序
BOOLC吹泡泡Dlg:
:
OnInitDialog()
{
CDialog:
:
OnInitDialog();
//将“关于...”菜单项添加到系统菜单中。
//IDM_ABOUTBOX必须在系统命令范围内。
ASSERT((IDM_ABOUTBOX&0xFFF0)==
IDM_ABOUTBOX);
ASSERT(IDM_ABOUTBOX<0xF000);
CMenu*pSysMenu=GetSystemMenu(FALSE);
if(pSysMenu!
=NULL)
XX文库-让每个人平等地提升自我{
CStringstrAboutMenu;
XX文库-让每个人平等地提升自我strAboutMenu.LoadString
(IDS_ABOUTBOX);
if(!
strAboutMenu.IsEmpty())
{
pSysMenu->AppendMenu
(MF_SEPARATOR);
pSysMenu->AppendMenu
(MF_STRING,IDM_ABOUTBOX,strAboutMenu);
}
}
//设置此对话框的图标。
当应用程序主窗口不是
对话框时,框架将自动
//执行此操作
SetIcon(m_hIcon,TRUE);
//设置大图标
SetIcon(m_hIcon,FALSE);
//设置小图标
CDialog:
:
OnInitDialog();
CStatic*pST=(CStatic*)GetDlgItem
(IDC_CLIENT);
pST->GetWindowRect(&m_rectClient);
ScreenToClient(&m_rectClient);
m_nBubbleCount=0;
//TODO:
在此添加额外的初始化代码
returnTRUE;//除非将焦点设置到控件,否
则返回TRUE
}
voidC吹泡泡Dlg:
:
OnSysCommand(UINTnID,LPARAM
lParam)
{
if((nID&0xFFF0)==IDM_ABOUTBOX)
{
CAboutDlgdlgAbout;
dlgAbout.DoModal();
}
else
{
CDialog:
:
OnSysCommand(nID,
lParam);
}
}
//如果向对话框添加最小化按钮,则需要下面的代码
//来绘制该图标。
对于使用文档/视图模型的MFC应用
程序,
//这将由框架自动完成。
voidC吹泡泡Dlg:
:
OnPaint()
{
if(IsIconic())
{
CPaintDCdc(this);//用于绘制的设
备上下文
SendMessage(WM_ICONERASEBKGND,
reinterpret_cast
//使图标在工作区矩形中居中
intcxIcon=GetSystemMetrics
(SM_CXICON);
intcyIcon=GetSystemMetrics
(SM_CYICON);
CRectrect;
GetClientRect(&rect);
intx=(rect.Width()-cxIcon+
1)/2;
inty=(rect.Height()-cyIcon+
1)/2;
//绘制图标
dc.DrawIcon(x,y,m_hIcon);
}
else
{
CPaintDCdc(this);
CBrushbrushNew;
CPenpenNew;
brushNew.CreateSolidBrush(RGB(rand
()%255,rand()%255,rand()%255));
penNew.CreatePen(PS_SOLID,1,RGB
(255,0,0));
dc.SelectObject(&brushNew);
dc.SelectObject(&penNew);
for(inti=0;i
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- mfc 学习 范例 按钮 控件 使用