属性设置
编辑框的属性主要在 Styles 选项卡中设置。重要属性有:
Multiline :定义该编辑框为多行文本框。
Number :限定输入的字符只能是数字字符。
Border :为控件创建边界。
Read-only :编辑框成为只读的,禁止用户编辑。
常用方法
一、向Static文本添加文本有几下几种方法:
方法1:
CString s("test");
//GetDlgItem()返回的是一个控件句柄,利用这个句柄来访问这个控件
//与之相匹配的是GetDlgItem(IDC_STATIC)->GetWindowTextW(s);
GetDlgItem(IDC_STATIC)->SetWindowTextW(s);
方法2:
//与之相对应的是GetDlgItemText();
SetDlgItemText(IDC_STATIC, _T("test"));
方法3:
//与之对应的是GetDlgItemInt()
SetDlgItemInt(IDC_STATIC, 10086);
方法4:
把控件和整型变量相关联,注意一下,静态文本框IDC_STATIC是不能直接添加变量的,要把ID改为其它的才行.步骤是右键单击该控件->添加变量
m_intl = 10086; //控件的整型变量
UpdateData(FALSE);//更新文本框显示新内容
方法5:
把控件和控件变量相关联,添加方法和4差不多
//与之相对应的是m_Static.GetWindowText()
m_Static.SetWindowText(_T("test"));
方法6:
TCHAR buf[] = _T("test");
//向文本框发送消息
::SendMessage(GetDlgItem(IDC_TEXT)->m_hWnd, WM_SETTEXT, sizeof(buf), (LPARAM)buf);
方法7:
TCHAR buf[] = _T("test");
//不用句柄,直接有控件ID就能发送消息
SendDlgItemMessage(IDC_TEXT, WM_SETTEXT, sizeof(buf), (LPARAM)buf);
二、修改静态文本框中文字的颜色、大小、字体
1、如果是要修改文字的颜色,重载OnCtlColor()函数,并在里面修改文字的颜色
HBRUSH CXXXDlg::OnCtlColor(CDC* pDC, CWnd* pWnd, UINT nCtlColor)
{
HBRUSH hbr = CDialogEx::OnCtlColor(pDC, pWnd, nCtlColor);
// TODO: 在此更改 DC 的任何特性
int n = pWnd->GetDlgCtrlID();
if (n == IDC_STATIC_XXX) //这里的ID就是你自己要设置透明的静态文本框ID
{
pDC->SetTextColor(RGB(255, 0, 0)); //这里的RGB(255, 0, 0)就是你自己要设置的字体颜色
return HBRUSH(GetStockObject(HOLLOW_BRUSH));
}
// TODO: 如果默认的不是所需画笔,则返回另一个画笔
return hbr;
}
2、如果是要修改文字的大小、字体,那么需要分2步
(1).在对话框的头文件中,创建CFont m_font,这是对话框的类成员变量;
(2).在OnInitDialog()函数中给m_font创建字体,并用静态文本框的控件设置该创建的字体
XXXDlg对话框头文件:
#pragma once
// CXXXDlg 对话框
class CXXXDlg : public CDialogEx
{
// 构造
public:
CTestDlg(CWnd* pParent = NULL); // 标准构造函数
// 对话框数据
enum { IDD = IDD_TEST_DIALOG };
protected:
virtual void DoDataExchange(CDataExchange* pDX); // DDX/DDV 支持
// 实现
protected:
HICON m_hIcon;
// 生成的消息映射函数
virtual BOOL OnInitDialog();
afx_msg void OnPaint();
afx_msg HCURSOR OnQueryDragIcon();
DECLARE_MESSAGE_MAP()
public:
CFont m_font; // 待创建的字体
CStatic m_static_xxx; // 为静态文本框控件添加的Control类型的变量(注意:最好统一用ClassWizard来给控件添加变量)
};
XXXDlg对话框源文件的OnInitDialog()函数:
BOOL CXXXDlg::OnInitDialog()
{
CDialogEx::OnInitDialog();
// 设置此对话框的图标。当应用程序主窗口不是对话框时,框架将自动执行此操作
SetIcon(m_hIcon, TRUE); // 设置大图标
SetIcon(m_hIcon, FALSE); // 设置小图标
// TODO: 在此添加额外的初始化代码
m_font.CreatePointFont(100, _T("楷体"), NULL); // 100即为文字的大小,_T("楷体")即为文字的字体
m_static_xxx.SetFont(m_font); // 设置字体
return TRUE; // 除非将焦点设置到控件,否则返回 TRUE
}
三、对静态文本框的背景实现透明处理:
首先,重载对话框的OnCtlColor()函数,也就是负责控件的颜色绘制
然后,如下所示,指定ID相对应的控件的背景模式为透明
HBRUSH CXXXDlg::OnCtlColor(CDC* pDC, CWnd* pWnd, UINT nCtlColor)
{
HBRUSH hbr = CDialogEx::OnCtlColor(pDC, pWnd, nCtlColor);
// TODO: 在此更改 DC 的任何特性
int n = pWnd->GetDlgCtrlID();
if (n == IDC_STATIC_XXX) //这里的ID就是你自己要设置透明的静态文本框ID
{
pDC->SetBkMode(TRANSPARENT);
return HBRUSH(GetStockObject(HOLLOW_BRUSH));
}
// TODO: 如果默认的不是所需画笔,则返回另一个画笔
return hbr;
}
四、显示bmp图片文件
//创建CStatic控件
CStatic myStatic;
myStatic.Create(L"", WS_CHILD | WS_VISIBLE | SS_BITMAP |SS_CENTERIMAGE ,CRect(70,145,350,330), this, 10004);
//加载图片
HBITMAP hBitMap = (HBITMAP)::LoadImage(NULL, L"C:\\1.bmp",IMAGE_BITMAP,0,0,LR_VGACOLOR | LR_LOADFROMFILE );
myStatic.SetBitmap(hBitMap);