static text是一段不可编辑的文字,主要用来起提示作用.在C#中类似的控件叫Label.
如果只是没啥特殊要求,并且内容固定.就简单的在属性窗口中中Caption中输入内容即可.另外在代码中常用到的一些操作如下(假设static text ID为IDC_STATIC_NOTE)
GetDlgItem(IDC_STATIC_NOTE)->SetWindowText("this is note info"); //动态指定static text显示内容
GetDlgItem(IDC_STATIC_NOTE)->EnableWindow(FALSE); //参数默认值是TRUE,使控件不可用.不过还是显示在那.
GetDlgItem(IDC_STATIC_NOTE)->ShowWindow(TRUE); //让static text显示,如果隐藏就是FALSE,跟在属性窗口中设置Visible效果一样.
CString szInfo;
GetDlgItem(IDC_STATIC_NOTE)->GetWindowText(szInfo); //获得static 显示的内容
一般都是通过绑定一个CString类型的变量.
头文件中CString m_szInfo;
///////cpp文件中//////////////////
在函数DoDataExchange中
DDX_Text(pDX,IDC_STATIC_NOTE, m_szInfo); //这里就是把控件与变量绑到一起了.
不过要注意的是你在代码里改变了m_szInfo的值的话,在页面上显示的不会马上更新,你得调用UpdateData(FALSE);才会更新.该函数中如果参数为TRUE则表示使显示控件中的值更新到对应的变量中,static里面是不可输值,不过像edit control这样的控件是可以输值的.
CStatic m_cInfo;
DDX_Control(pDX,IDC_STATIC_NOTE,m_cInfo);
这样绑定后,我们就可以直接调用类CStatic的一些函数做些操作了.比如常见的是设置字体.
CFont font;
font.CreateFont(...);//这里参数就省略没写了.里面有十多个参数吧.
m_cInfo.SetFont(&font);
font.DeleteObject();
我们有时想改写显示的字颜色咋整呢? 反正最常用的场景就是如果想用红色来起警示作用.在C# WinForm控件中不管是设置字体还是颜色只要在属性窗口简单的选下就行.MFC里面就有点麻烦了啊.得用消息来处理.
假如static text所在对话框(dialog),对应的类为CTextDlg;
afx_msg HBRUSH OnCtlColor(CDC* pDC, CWnd* pWnd, UINT nCtlColor); //声明一回调函数
//在cpp文件中敲入如下代码
BEGIN_MESSAGE_MAP(CTextDlg, CDialog)
ON_WM_CTLCOLOR()
END_MESSAGE_MAP()
//回调函数的定义
//实际上对话框里面用到的所有控件如果想做颜色方面的设置都可以在这里实现.
//只要通过GetDlgCtrlID判断下是哪个控件就行.
HBRUSH CTextDlg::OnCtlColor(CDC* pDC, CWnd* pWnd, UINT nCtlColor){
HBRUSH hbr = CDialog::OnCtlColor(pDC, pWnd, nCtlColor);
if(pWnd->GetDlgCtrlID()==IDC_STATIC){
pDC->SetTextColor(RGB(255,0,0)); //设为红色
}
}
edit control就是一个起输入作用的文本框.所以如果相让用户输入啥用户名密码自然用它了.
如果是一些简单使用的话,也跟static text一样使用GetDlgItem函数操作下,或者绑定到CString或CEdit类型变量上.
不过这控件功能更强大,有很多属性.比如在属性窗口看到常用的属性有:
Lowercase:设为True的话则文本框中输入的所有字母不管大小写全转换成小写
Uppercase:全转换成大写字母
Password:设为True则表示输入的内容不会显示出来,只是一些黑点.一般输密码的地方就这样设
Read Only:只读,不可编辑
Multiline:文本框内容可换行,多行显示内容
Want Return: 如果可换行,这里设Ture,表示敲Enter(回车键)时就会换行
Horizontal Scroll:水平方向滚动条
Vertical Scroll :垂直方向滚动条