VC中edit控件使用
SetSel(start,end)作用:
定制EDIT的所选择内容.间接地可以用于定位光标位置.
使用例子:
EXP1:设置光标
CEdit* pEdit=(CEdit*)GetDlgItem(IDC_EDIT1);
pEdit->SetSel(2,2);
pEdit->SetFocus();
EXP2:选择内容
CEdit* pEdit=(CEdit*)GetDlgItem(IDC_EDIT1);
pEdit->SetSel(0,2);//两个字符
说明:
如果出现光标设置失效的情况,可能是由于以下情况:因为UpdateData()的作用也会重置光标,所以用于设置光标时一定要放在UpdateData()之后.
如果用于选择内容:SetSel(0,-1)表示全选;SetSel(-1,i)表示删除所有.
1.怎么在CEDIT执行回车换行显示的功能?
CEdit控件设置want return 属性 并设置Multiline属性,此时用
CEdit* pEdit = (CEdit*)GetDlgItem(IDC_EDIT1);
pEdit->SetWindowText("第一\r\n第二\r\n第三");
将显示3行。
2。作为密码输入控件使用。
m_WndEDIT4.SetPasswordChar('*');
3。CEDIT没有AppendText功能怎么办?
int nLength = m_WndEDIT4.SendMessage(WM_GETTEXTLENGTH);
m_WndEDIT4.SetSel(nLength, nLength);
m_WndEDIT4.ReplaceSel( " abc " );
1.如果文本框和变量建立了关联直接
UpdateData(TRUE) //用于获得文本框中的内容;
UpdateData(FALSE) //用于更新文本框的内容并和更新关联的变量
例如:
DDX_Text(pDX, IDC_EDIT1, m_sEdit1);//把变量m_sEdit1与IDC_EDIT1建立联系
//让文本框中显示“Hello”
m_sEdit1 = "Hello";
UpdateData(FALSE);
//获得文本框的用户输入内容
UpdateData(TRUE);//如果用户写入的是"MingFei",那么m_sEdit1的值应该是"MingFei"
if (m_sEdit1 == "MingFei")
{
AfxMessageBox("OK");
}
2.
CString str;
GetDlgItemText(IDC_EDIT1, str);//获得文本框中的内容,保存在str中
SetDlgItemText(IDC_EDIT1, str);//向文本框中写入str
3.麻烦点,其实就是第二种方法
CEdit *edit=(CEdit*)GetDlgItem(IDC_EDIT1);
CString dir;
edit->GetWindowText(dir);
(47) 如何限制编辑框中的准许字符
如果用户在编辑控件中只允许接收数字,可以使用一个标准的编辑控件并指定新的创建标志ES_NUMBERS,它是Windows 95新增加的标志,该标志限制 编辑控件只按收数字字符。如果用户需要复杂的编辑控件,可以使用Microsoft 的屏蔽编辑控件,它是一个很有用的OLE定制控件。
如果希望不使用OLE 定制控件自己处理字符,可以派生一个CEdit类并处理WM_CHAR消息,然后从编辑控件中过滤出特定的字符。首先,使用ClassWizard建立一个 CEdit的派生类,其次,在对话类中指定一个成员变量将编辑控件分类在OnInitdialog 中调用CWnd: : SubclassDlgItem .
//In your dialog class declaration (.H file )
private : CMyEdit m_wndEdit // Instance of your new edit control .
//In you dialog class implementation (.CPP file )
BOOL CSampleDialog : : OnInitDialog ( )
{
…
//Subclass the edit lontrod .
m_wndEdit .SubclassDlgItem (IDC_EDIT,this)
…
}
使用ClassWizard处理WM_CHAR消息,计算nChar参量并决定所执行的操作,用户可以确定是否修改、传送字符。下例说明了如何显示字母字符,如果字符是字母字符,则调用CWnd OnChar,否则不调用OnChar.
//Only display alphabetic dharacters .
void CMyEdit : : OnChar (UINT nChar , UINT nRepCnt , UITN nFlags )
{
//Determine if nChar is an alphabetic character.
if (: : IsCharAlpha ( ( TCHAR) nChar ) )
CEdit : : OnChar (nChar, nRepCnt , nFlags )
}
如果要修改字符,则不能仅仅简单地用修改过的nChar调用CEdit: : OnChar,然后CEdit: : OnChar调用CWnd: : Default获取原来的wParam 和lParam 的值,这样是不行的。要修改一个字符,需要首先修改nChar,然后用修改过的nChar调用CWnd: : DefWindowProc。下例说明了如何将字符转变为大写:
//Make all characters uppercase
void CMyEdit : : OnChar (UINT nChar , UINT nRepCnt , UINT nFlags )
{
//Make sure character is uppercase .
if (: : IsCharAlpha ( .( TCHAR) nChar)
nChar=: : CharUpper(nChar )
//Bypass default OnChar processing and directly call
//default window proc.
DefWindProc (WM_CHAR, nChar , MAKELPARAM (nRepCnt, nFlags ))
}
枚举所有字体
LOGFONT lf;
lf.lfCharSet = DEFAULT_CHARSET; // Initialize the LOGFONT structure
strcpy(lf.lfFaceName,"");
CClientDC dc (this);
// Enumerate the font families
::EnumFontFamiliesEx((HDC) dc,&lf, (FONTENUMPROC) EnumFontFamProc,(LPARAM) this,0);
//枚举函数
int CALLBACK EnumFontFamProc(LPENUMLOGFONT lpelf,
LPNEWTEXTMETRIC lpntm,DWORD nFontType,long lparam)
{
// Create a pointer to the dialog window
CDay7Dlg* pWnd = (CDay7Dlg*) lparam;
// add the font name to the list box
pWnd ->m_ctlFontList.AddString(lpelf ->elfLogFont.lfFaceName);
// Return 1 to continue font enumeration
return 1;
}
用Edit Box 显示系统实时时间:
在对话框的初始化函数OnInitDialog()中添加以下程序:
SYSTEMTIME st;
GetLocalTime(&st);
CString str_temp;
str_temp.Format("%u/%u/%u %u:%u:%u:%u\n", st.wYear, st.wMonth, st.wDay, st.wHour, st.wMinute, st.wSecond, st.wMilliseconds);
CEdit* edt = (CEdit*)GetDlgItem(IDC_EDIT_TIME);
edt->SetWindowText(str_temp);
用Edit Box 显示系统当前时间:
在对话框的初始化函数OnInitDialog()中添加以下程序:
CString str;
CTime tm;
tm = CTime::GetCurrentTime(); //把获得的当前时间保存到变量tm中
str = tm.Format("%Y年%m月%d日 %X");
this->GetDlgItem(IDC_EDIT1)->SetWindowText(str);
用Edit Box 只接受数字输入:
在对话框初始化函数中添加以下代码:
CEdit* m_edit = (CEdit*)GetDlgItem(IDC_EDIT1);
long wl = GetWindowLong(m_edit->m_hWnd, GWL_STYLE); //获得Edit Box的窗口风格
SetWindowLong(m_edit->m_hWnd, GWL_STYLE, wl | ES_NUMBER); //设置Edit Box新风格
自定义Edit Box的可输入内容:
重载对话框的PreTranslateMessage函数,并且添加以下代码:
BOOL CLangziDlg::PreTranslateMessage(MSG* pMsg)
{
CEdit* m_edit = (CEdit*)GetDlgItem(IDC_EDIT1);
if((pMsg->hwnd == m_edit->m_hwnd) && (pMsg->message == WM_CHAR))
{
if(65 != pMsg->wParam) //只允许输入字母A(A的ascll码是65)
return TRUE;
}
}
VC中edit控件使用的更多相关文章
- vc中edit控件使用总结
通过类向导可以生成两种类成员变量,一种是cstring类型,一种是cedit类型.在程序中使用时如果只是简单的获取 edit控件内容,或设置简单的内容建议使用cstring类型成员变量.示例:CStr ...
- Windows获取其他进程中Edit控件的内容
最近做的MFC项目中,有个获取其他进程中Edit控件内容的需求,本来以为是个很简单的问题,但是来来回回折腾了不少时间,发博记录一下. 刚开始拿到这个问题,很自然的就想到GetDlgItemText() ...
- vc 在edit控件中动态插入数据滚动显示
内存从网上论坛摘抄整理 思路:给控件设置多行属性,设置垂直滚动条,Auto Vscroll设置为true,放入文本后把插入点设置到末尾 pEdit->LineScroll(pEdit->G ...
- 一种导致 emwin 中 EDIT 控件不显示的情况
@2018-12-11 [小记] 设计界面中使用了 EDIT 控件,但在其初始化语句中误使用了 text-color 属性API,导致了控件 EDIT 中的 Text 无法显示,具体如下 hItem ...
- VC++中关于控件重绘函数/消息 OnPaint,OnDraw,OnDrawItem,DrawItem的区别
而OnPaint()是CWnd的类成员,同时负责响应WM_PAINT消息. OnDraw()是CVIEW的成员函数,并且没有响应消息的功能.这就是为什么你用VC成的程序代码时,在视图类只有OnDraw ...
- VC++中CEdit控件实现回车换行
1.通过回车Enter换行: 这里要有两个设置 <1>.将控件的属性设置为Mutilines->true; <2>.将控件的另一个属性设置为Want return-> ...
- MFC中EDIT控件实现换行
\n是C下的回撤换行.在MFC下得用\r\n.
- emWin(ucGui)的Edit控件退格处理方法 worldsing
在enWin(ucGui)中EDIT控件在数值模式(十进制/十六进制/二进制/浮点数)下编辑是,无法使用BackSpace键进行退格,主要涉及到的函数有: EDIT_SetBinMode() EDIT ...
- VC++6.0/MFC中如何限制Edit控件输入 例子,只能输入0和1
1.Insert -> New Class -> 在Base Class中选择CEdit,在Name中输入CMyEdit. 2.在左边的ClassView中,右键击CMyEdit,选择Ad ...
随机推荐
- 从零开始的全栈工程师——html篇1.3
文本.字体css样式与前期英语单词汇总 一.文本样式(text) 1.颜色:color:red; 2.文本对齐方式:text-align:left/center/right/justify; left ...
- scss-字符串连接符
+ 运算可用于连接字符串: // SCSS p { cursor: e + -resize; } // 编译后的 CSS 样式 p { cursor: e-resize; } 请注意,如果带引号的字符 ...
- HTML 提高页面加载速度的方法
(1)减少 HTTP 的请求.(合并资源文件 和 使用图片精灵 : (2)把CSS 放头部,把 JavaScript 放到 body 标签尾部: (3)定义图片的宽和高: (4)定义字符集: (5) ...
- android自定义控件——以滑动开关为例
0.引言 (1)Android从4.0开始提供了switch的滑动开关效果组件,但是之前版本却没有 (2)很多时候我们写程序,都希望把有用的通用的通用的东西封装起来,以便以后重用. 本文根据组件开发思 ...
- uwsgi特性
uwsgi 特性 官网参考 X-Sendfile仿真 即使前端 代理/webserver 不支持X-Sendfile (或者不能访问静态资源),可以使用 uwsgi 内部的 offloading 来模 ...
- Azure进阶攻略丨Azure网络通不通,PsPing&PaPing告诉你答案
很多时候,为了解决一些问题,要查各种文档,很麻烦你造吗!做「伸手党」又容易被鄙视,这时候就需要用到[Azure 进阶攻略]啦!特此,我们推出关于 Azure 常用操作指南的系列文章,每篇涉及一个 Az ...
- Blob, Uint8Aray, atob/btoa in lt IE9 browser
Blob, Uint8Aray, atob/btoa in lt IE9 browser 标签(空格分隔): compatibility 之前写的代码全部在Chrome调试,用IE打开发现各种问题. ...
- Windows远程桌面,出现身份验证错误,要求的函数不正确
升级windows10 1803后,mstsc远程桌面出现 mstsc 远程桌面要求的函数不受支持,这可能是由于 CredSSP 加密 Oracle 修正.如图所示: 运行(win+r) gpedit ...
- 在Centos 7上安装Docker
在Centos 7上安装Docker 1.docker介绍 docker是类似于vmware的虚拟化软件,可以开发.容纳.运行应用程序的平台,在容器中安全的隔离运行应用程序. 2.Docker引擎 D ...
- 基于ssh的多节点之间互信通信的实现
实现条件:node1:192.168.176.6 主机名称是node1.magedu.com: node2:192.168.176.6 主机名称是node1.magedu.com: 实现目的:在节点n ...