MFC Radio Button 和 Combox Button的简单操作
2015-10-04 20:09
417 查看
一、
建立基于对话框的MFC程序
首先创建控件,如图所示.
控件变量的名字分别为:
工号:m_strNo
姓名:m_strName
性别:m_cbSex
学历:m_cbEducation
性别创建变量前先选中'男','女',Group设为TRUE创建之后再设回为FALSE
1.设置男女的初始值,在初始化区域内
在初始化区域内:
自定义排序:
4.测试学历
双击学历选择测试进去编写代码
5.设置工号和姓名的初始值
在初始化区域中
运行结果:
二、
建立基于对话框的MFC应用程序
1.首先设置好控件,如图所示
2.初始化
(1)初始化线性
线性对应的复选框ID取名为IDC_COMBO_LINESTYLE
然后在初始化区域BOOL CMFCProcDlg::OnInitDialog()填写代码
(2)设置线宽
取线宽对应的编辑框的名字为IDC_EDIT_LINEWIDTH
在BOOL CMFCProcDlg::OnInitDialog()初始函数中初始化线宽为0
(3)设置图形
将单选框“直线”选为Group为TRUE,然后添加int变量m_iGraphStyle.
此时单选框就有用了。
3.画图
注释掉void CMFCProcDlg::OnPaint()函数{}内的所有内容。
在头文件中定义颜色变量m_color
设置显示效果组合框的ID为IDC_STATIC_SHOW
在画图函数中写如下代码:
此时已经可以正常显示图形了。
分别双击“直线”,”弧线“,“椭圆“,”矩形“,”文字“
填入代码:
但是此时点击线型,填写线宽后都不能立刻重绘.此时也是分别双击,填入如上代码.
4.颜色设置
双击颜色设置按钮。
此时整个功能就完成了。
但是文字的颜色效果并没有改变。
建立基于对话框的MFC程序
首先创建控件,如图所示.
控件变量的名字分别为:
工号:m_strNo
姓名:m_strName
性别:m_cbSex
学历:m_cbEducation
性别创建变量前先选中'男','女',Group设为TRUE创建之后再设回为FALSE
1.设置男女的初始值,在初始化区域内
m_cbSex.Check(TRUE);2.双击性别选择测试按钮:
void CRatio_ComboxDlg::OnBnClickedButton1() { // TODO: 在此添加控件通知处理程序代码 CString str = L"你选中的性别是"; if (m_cbSex.GetCheck()) str = str + L"男"; else str = str + L"女"; MessageBox(str,L"Sex"); }3.设置初始学历
在初始化区域内:
// 设置初始学历 m_cbEducation.AddString(L"小学"); m_cbEducation.AddString(L"初中"); m_cbEducation.AddString(L"高中"); m_cbEducation.AddString(L"本科"); m_cbEducation.AddString(L"专科"); m_cbEducation.AddString(L"硕士"); m_cbEducation.AddString(L"博士");这样的设置是按字母顺序排序的,并且可以修改选择的内容。更改Combox的Style属性为DropList即不可修改。
自定义排序:
// 自定义学历排序 m_cbEducation.InsertString(0, L"小学"); m_cbEducation.InsertString(1, L"初中"); m_cbEducation.InsertString(2, L"高中"); m_cbEducation.InsertString(3, L"本科"); m_cbEducation.InsertString(4, L"专科"); m_cbEducation.InsertString(5, L"硕士"); m_cbEducation.InsertString(6, L"博士"); // 设置学历初始值 m_cbEducation.SetCurSel(3);
4.测试学历
双击学历选择测试进去编写代码
void CRatio_ComboxDlg::OnBnClickedButton2() { // TODO: 在此添加控件通知处理程序代码 CString str_sel; CString str_sum; int i_sum; m_cbEducation.GetWindowTextW(str_sel); // 获取选择 str_sel = L"选择的学历是" + str_sel + L","; // 组合成字符串 i_sum = m_cbEducation.GetCount(); // 获取个数 str_sum.Format(L"%d", i_sum); // 转化为字符串 str_sum = L"共有" + str_sum + L"种学历层次"; // 组合字符串 MessageBox(str_sel + str_sum, L"Education"); }
5.设置工号和姓名的初始值
在初始化区域中
//设置工号和姓名的初始值 m_strName = L"War001"; m_strNo = L"LS2015"; // 把成员变量的数据更新到窗口控件 UpdateData(FALSE);
运行结果:
二、
建立基于对话框的MFC应用程序
1.首先设置好控件,如图所示
2.初始化
(1)初始化线性
线性对应的复选框ID取名为IDC_COMBO_LINESTYLE
然后在初始化区域BOOL CMFCProcDlg::OnInitDialog()填写代码
// 添加线型 ((CComboBox*)GetDlgItem(IDC_COMBO_LINESTYLE))->InsertString(0, L"实 线"); ((CComboBox*)GetDlgItem(IDC_COMBO_LINESTYLE))->InsertString(1, L"虚 线"); ((CComboBox*)GetDlgItem(IDC_COMBO_LINESTYLE))->InsertString(2, L"虚 线"); ((CComboBox*)GetDlgItem(IDC_COMBO_LINESTYLE))->InsertString(3, L"点 线"); ((CComboBox*)GetDlgItem(IDC_COMBO_LINESTYLE))->InsertString(4, L"点划线"); ((CComboBox*)GetDlgItem(IDC_COMBO_LINESTYLE))->InsertString(5, L"双点划线"); ((CComboBox*)GetDlgItem(IDC_COMBO_LINESTYLE))->SetCurSel(0);这步设置完后,复选框就有用了
(2)设置线宽
取线宽对应的编辑框的名字为IDC_EDIT_LINEWIDTH
在BOOL CMFCProcDlg::OnInitDialog()初始函数中初始化线宽为0
// 初始化线宽 ::SendMessage(GetDlgItem(IDC_EDIT_LINEWIDTH)->m_hWnd, WM_SETTEXT, 10, (LPARAM)L"0");
(3)设置图形
将单选框“直线”选为Group为TRUE,然后添加int变量m_iGraphStyle.
此时单选框就有用了。
3.画图
注释掉void CMFCProcDlg::OnPaint()函数{}内的所有内容。
在头文件中定义颜色变量m_color
设置显示效果组合框的ID为IDC_STATIC_SHOW
public: // 图形状 int m_iGraphStyle; // 颜色 int m_color;
在画图函数中写如下代码:
CPaintDC dc(this); // 将组合框中的内容传递给成员变量 UpdateData(); // 获取线型组合框的选项 int line_style = ((CComboBox*)GetDlgItem(IDC_COMBO_LINESTYLE))->GetCurSel(); // 获取线宽度 TCHAR str_width[12] = L""; ::SendMessage(GetDlgItem(IDC_EDIT_LINEWIDTH)->m_hWnd, WM_GETTEXT, 10, (LPARAM)str_width); int i_width = _ttoi(str_width); // 设置画笔 CPen pen(line_style, i_width, m_color); CPen *pOldPen = dc.SelectObject(&pen); // 要画的区域 CRect rect; // 获取显示效果组合框区域 GetDlgItem(IDC_STATIC_SHOW)->GetWindowRect(&rect); // 将设备值转化为逻辑值 ScreenToClient(&rect); switch (m_iGraphStyle){ case 0: // 直线 dc.MoveTo(rect.left + 20, rect.top + rect.Height() / 2); dc.LineTo(rect.right - 20, rect.top + rect.Height() / 2); break; case 1: {// 弧线 dc.MoveTo(rect.left + 5, rect.top + rect.Height() / 2); const int NUM = 1000; POINT apt[NUM]; for (int i = 0; i < NUM; i++){ apt[i].x = i*(rect.Width()-20) / NUM + rect.left+10; apt[i].y = (int)(((rect.Height()-20) / 2)*(1 - sin(3.14 * 8 * i / NUM)) + rect.top + rect.Height() / 16); } dc.Polyline(apt, NUM); }break; case 2: // 椭圆 dc.Ellipse(rect.left + 10, rect.top + 10, rect.right - 10, rect.bottom - 10); break; case 3: // 矩形 dc.Rectangle(rect.left + 10, rect.top + 10, rect.right - 10, rect.bottom - 10); break; case 4: // 文字 dc.TextOutW(rect.left + 30, rect.top + rect.Height() / 2, L"MFC程序文字显示,显示效果展示"); break; } dc.SelectObject(pOldPen);
此时已经可以正常显示图形了。
分别双击“直线”,”弧线“,“椭圆“,”矩形“,”文字“
填入代码:
Invalidate();使整个窗口无效,致使重绘.
但是此时点击线型,填写线宽后都不能立刻重绘.此时也是分别双击,填入如上代码.
4.颜色设置
双击颜色设置按钮。
void CMFCProcDlg::OnBnClickedButton1() { // TODO: 在此添加控件通知处理程序代码 CColorDialog Dlg; if (Dlg.DoModal() == IDOK){ // 如果点击确认 m_color = Dlg.m_cc.rgbResult; } Invalidate(); }
此时整个功能就完成了。
但是文字的颜色效果并没有改变。
相关文章推荐
- 第三周学习总结
- [android]完美的解决方案ListView加载网络图片反弹问题
- 弱校联萌十一大决战之如日中天 G Gadget Hackwrench
- A018-布局之TableLayout
- 信息安全系统设计基础第四周学习总结
- 信息安全系统设计基础 第4周学习笔记
- Servlet的学习之Request请求对象(2)
- Java多态性理解
- main函数
- 线性筛
- 自己的练习二之构造函数与初始化列表
- 线性筛
- poj 1127 计算几何入门题 求线段交点
- Android Filter筛选ListView并且筛选内容变色
- HDOJ 5498 Tree
- Linux第三次学习笔记
- iOS按钮的使用和动画的实现
- curl是一个利用URL规则在命令行下工作的文件传输工具。
- 自己练习一之对象的访问和对象的存储和指针
- IMS技术