vc入门宝典四(常用控件)
常用控件
主要内容:
1, 按钮
(1),位图按钮及动态按钮
(2),自画按钮
2,列表框
3,编辑控件和CRichEdit
4,CSliderCtrl
按钮的使用十分简单,拖一个到对话框,双击它就可以编辑代码了。利用程序向导生成一个基于对话框的程序Controls,拖一个按钮在对话框上,ID为IDC_OWNER,双击控件增加响应函数。为IDOK设置关联变量m_ok,将下列代码加到响应函数。m_ok.EnableWindow(false); 它的作用是使OK禁用。
将刚刚加的代码换成下面的,Ctrl+F5,点我们加的按钮就可以看到确定按钮变成了复选框,我们单击它,它还是执行以前的代码。
UINT Style = m_ok.GetButtonStyle();
Style |= BS_3STATE;
m_ok.SetButtonStyle(Style);
风格有:BS_AUTOCHECKBOX BS_AUTORADIOBUTTON BS_AUTO3STATE BS_CHECKBOX BS_DEFPUSHBUTTON BS_GROUPBOX BS_LEFTTEXT BS_OWNERDRAW BS_PUSHBUTTON BS_RADIOBUTTON BS_3STATE
将刚刚加的代码换成下面的:
CWnd *pWnd = GetDlgItem(IDOK);
pWnd->EnableWindow(false);
它的效果是也是使确定按钮禁用,第一行的作用是根据ID找到CWnd指针,注意有些函数是CButton类特有的,那么我必须把pWnd强制转换成CButton类指针。
CButton常用的函数还有:
.GetFocus();获得拥有焦点的窗口,SetFocus();获得焦点。如果一个按钮拥有焦点,空格可以让它执行。
GetFont();SetFont();获得和设置字体。
位图按钮。
将确定的按钮的自画风格钩上,将确定按钮的标题改为OK,加四幅位图, “OKU”,”OKD”,”OKF”,”OKX”,分别对就按钮弹起来,被按下去,获得焦点,禁用情况,注意位图名有引号。
定义一个成员变量CBitmapButton bb,在OnInitDialog()加
bb.AutoLoad(IDOK,this);
有一个问题要注意,当点上自画时,默认按钮会被取消,所以你必须重新设定一个默认按钮。
将上面的一句改成:
bb.LoadBitmaps("OKU");//最多可以加载4幅,至少加载一幅。
bb.SubclassDlgItem(IDOK,this);//与控件建立关联。
bb.SizeToContent();//改变控件的大小来适应位图
自画按钮:
将取消按钮的自画钩上,Ctrl+w打开类向导,双击加CControlDlg的消息WM_DRAWITEM的响应函数。
void CControlsDlg::OnDrawItem(int nIDCtl, LPDRAWITEMSTRUCT lpDrawItemStruct)
{
if(IDCANCEL ==nIDCtl)
{
CDC *pDC = new CDC();
pDC->Attach(lpDrawItemStruct->hDC);
pDC->TextOut(10,10,"haha");
}
CDialog::OnDrawItem(nIDCtl, lpDrawItemStruct);
}
备用函数
CRect r;
GetClientRect(&r);
r存储了取消按钮的边界值。
建立一个基于对话框的程序Controls,加一个列表框,ID: IDC_LIST,设立一个控制类型的变量m_ctrl,再增加三个按钮,ID分别为:Append,Insert,Delete;
void CControlsDlg::OnAPPEND()
{
UpdateData();
if(m_input.IsEmpty()) return;
int i = m_ctrl.GetCount();
m_ctrl.SetCurSel(i-1);//选取最后一个;
m_ctrl.AddString(m_input);
}
void CControlsDlg::OnINSERT()
{
int i = m_ctrl.GetCurSel();
if(-1 == i)
MessageBox("请在列表框中选择一项,新加的项将在此项的后面","注意");
else
{
UpdateData();
m_ctrl.InsertString(i+1,m_input);
}
}
void CControlsDlg::OnREMOVE()
{
int i = m_ctrl.GetCurSel();
if(-1 != i)
m_ctrl.DeleteString(i);
}
常用函数:
ResetContent 清空。
int FindString( int nStartAfter, LPCTSTR lpszItem ) const;
从第nStartAfter开始查找lpszItem所指的字符串,如果没有找到返回-1,否则返回序号。
int SelectString( int nStartAfter, LPCTSTR lpszItem );
与FindString类似,找到后会反色显示被找到的字符串。
编辑控件:
生成一个基于对话框的程序Controls,加一个编辑控件,设置一个控制类型的关联变量m_ctrl.增加一按钮,双击加代码:
m_ctrl.SetSel(0,3);//选择前4个字符。
m_ctrl.Cut();//剪切
m_ctrl.Paste();//粘贴
m_ctrl.Paste();//粘贴
类似的函数还有Undo,Copy,ReplaceSel。
void MoveWindow( int x, int y, int nWidth, int nHeight, BOOL bRepaint = TRUE );
void MoveWindow( LPCRECT lpRect, BOOL bRepaint = TRUE );
移动窗口(如控件)。
最后一个参数是否重画,前面的参数表明四个角的位置,注意大小及比例可能改变。
建立一个基于对话框的应用程序Control,加一个CRichEdit Ctrl+F5,应该一点反应都没有。因为我们没有加:
BOOL CControlsApp::InitInstance()
{
AfxInitRichEdit();
这样就行了。
CSliderCtrl
生成一个基于对话框的应用程序Controls,加一个Slider控件,让它与一个整形变量m_value相关,再让它与一个控制类型的变量m_ctrl相关,增加此控件的NM_RELEASEDCAPTURE的响应函数,在那里加:
void CControlsDlg::OnReleasedcaptureSlider1(NMHDR* pNMHDR, LRESULT* pResult)
{
UpdateData(true);
CString str;
str.Format("%d",m_value);
MessageBox(str);
*pResult = 0;
}
再加上:
m_ctrl.SetRange(20,120);// 设置最小,最大值
m_ctrl.SetPageSize(30);//设置一次改变多少
m_ctrl.SetPos(30);//设置位置
vc入门宝典四(常用控件)的更多相关文章
- 五、Android学习第四天补充——Android的常用控件(转)
(转自:http://wenku.baidu.com/view/af39b3164431b90d6c85c72f.html) 五.Android学习第四天补充——Android的常用控件 熟悉常用的A ...
- WPF 界面布局、常用控件入门教程实例 WPF入门学习控件快速教程例子 WPF上位机、工控串口通信经典入门
WPF(Windows Presentation Foundation)是一种用于创建 Windows 桌面应用程序的框架,它提供了丰富的控件库和灵活的界面布局,可以创建现代化的用户界面.下面是 WP ...
- MFC编程入门之二十二(常用控件:按钮控件Button、Radio Button和Check Box)
本节继续讲解常用控件--按钮控件的使用. 按钮控件简介 按钮控件包括命令按钮(Button).单选按钮(Radio Button)和复选框(Check Box)等.命令按钮就是我们前面多次提到的侠义的 ...
- MFC编程入门之二十(常用控件:静态文本框)
上一节讲了颜色对话框之后,关于对话框的使用和各种通用对话框的介绍就到此为止了.从本节开始将讲解各种常用控件的用法.常用控件主要包括:静态文本框.编辑框.单选按钮.复选框.分组框.列表框.组合框.图片控 ...
- MFC之常用控件(四)
常用控件主要包括:静态文本框.编辑框.单选按钮.复选框.分组框.列表框.组合框.图片控件.列表控件.树形控件和进度条控件等等.本节教程先来讲解静态文本框的使用. 控件的通知消息 在将静态文本框的使用之 ...
- VS2010/MFC编程入门之二十二(常用控件:按钮控件Button、Radio Button和Check Box)
言归正传,鸡啄米上一节中讲了编辑框的用法,本节继续讲解常用控件--按钮控件的使用. 按钮控件简介 按钮控件包括命令按钮(Button).单选按钮(Radio Button)和复选框(Check Box ...
- VS2010/MFC编程入门之二十(常用控件:静态文本框)
上一节鸡啄米讲了颜色对话框之后,关于对话框的使用和各种通用对话框的介绍就到此为止了.从本节开始鸡啄米将讲解各种常用控件的用法.常用控件主要包括:静态文本框.编辑框.单选按钮.复选框.分组框.列表框.组 ...
- 【番外篇】ASP.NET MVC快速入门之免费jQuery控件库(MVC5+EF6)
目录 [第一篇]ASP.NET MVC快速入门之数据库操作(MVC5+EF6) [第二篇]ASP.NET MVC快速入门之数据注解(MVC5+EF6) [第三篇]ASP.NET MVC快速入门之安全策 ...
- android内部培训视频_第三节 常用控件(Button,TextView,EditText,AutocompleteTextView)
第三节:常用控件 一.Button 需要掌握的属性: 1.可切换的背景 2.9.png使用 3.按钮点击事件 1) onClick 3) 匿名类 4) 公共类 二.TextView 常用属性 1.a ...
- 基于Extjs的web表单设计器 第四节——控件拖放
接着上一节介绍控件拖放的设计. 通过前面的介绍知道,我们的区域类型的容器控件有三种:Card.Table.Mixed. Card 可以支持几乎所有的常用控件,包括:文本TextField.多文本Tex ...
随机推荐
- BIgdataAIML-IBM-A neural networks deep dive - An introduction to neural networks and their programming
https://developer.ibm.com/articles/cc-cognitive-neural-networks-deep-dive/ By M. Tim Jones, Publishe ...
- BigdataAIML-Important Data Features preprocessing points非常重要的数据维度预处理方面
https://developer.ibm.com/tutorials/awb-k-means-clustering-in-python/ PCA: 对2D数据非常好理解,但是对tensor(3D以上 ...
- SciTech-Mathmatics-Taylor Equation泰勒公式: 用幂级数(幂函数的和) 去无穷拟合 N阶可导函数(连续可导有N阶导数)
https://www.mathsisfun.com/algebra/taylor-series.html https://math.libretexts.org/Bookshelves/Calcul ...
- Rust: Tcp编程Demo
最基本的Hello World示例: TcpServer端: use std::{net::TcpListener, io::{Read, Write}}; fn main() { //绑定本机300 ...
- windows11正式版进入电脑桌面黑屏的问题
有雨林木风windows11官网的小伙伴,安装了win11正式版发现系统能进入,但是桌面是黑屏的还有鼠标箭头,要怎么解决呢?下面雨林木风系统小编就给大家分享具体的解决方法. 方法如下:方法一:重启ex ...
- 单片机+4G模块和主流物联网平台实现MQTT协议通信视频教程
单片机+4G模块和主流物联网平台实现MQTT协议通信视频教程 1.单片机+4G模块和阿里云物联网平台实现MQTT协议通信视频教程单片机+4G模块和阿里云物联网平台实现MQTT协议通信,阿里云物联网平台 ...
- Linux C编程之三 静态库的制作和使用(lib + 名字 + .a)
摘自:https://www.cnblogs.com/xuejiale/p/10788320.html 一.整体大纲 二.静态库的制作 1)命名规则 lib + 库的名字 + .a ...
- Jquery通过Ajax发送数据2
一.低级Ajax方法 启动Ajax通信的方法,在内部jQuery会把这些方法都映射成$.ajax()全局函数的一种变体 $('#dictionary').load('a.html')加载HTML片段 ...
- [题解]ABC282E Choose Two and Eat One
ABC282E Choose Two and Eat One 又一个图论的回顾--Kruskal最小(最大)生成树算法. 看到\(n\)的范围只有\(500\),应该没有什么特别的算法.那么我们考虑建 ...
- 项目管理工具大横评:10 款 Jira 替代方案全面实测
Jira 作为业界"老牌"项目管理工具,在不少公司仍被广泛使用,但随着团队对本土化.DevOps 兼容性以及易用性的要求不断提高,越来越多企业开始寻找适合自身的新一代项目管理工具. ...