6.6 如何显示或隐藏控件
同样的还是IsWindowVisible和ShowWindow方法,之前使用过
void CDemoDlg::OnTest()
{
//获得控件窗口指针
CWnd* pWnd = GetDlgItem(IDC_EDIT);
//判断控件窗口是否可见
if (pWnd->IsWindowVisible())
{
//隐藏控件窗口
pWnd->ShowWindow(SW_HIDE);
SetDlgItemText(IDC_TEST, _T("显示控件"));
}
else
{
//显示控件窗口
pWnd->ShowWindow(SW_SHOW);
SetDlgItemText(IDC_TEST, _T("隐藏控件"));
}
}
6.7 如何启用或禁用控件
同上相似,只不过方法成对的换成了IsWindowEnabled和EnableWindow
void CDemoDlg::OnTest()
{
//获得控件窗口指针
CWnd* pWnd = GetDlgItem(IDC_EDIT);
//判断控件窗口是否可用
if (pWnd->IsWindowEnabled())
{
//禁用控件窗口
pWnd->EnableWindow(FALSE);
SetDlgItemText(IDC_TEST, _T("启用控件"));
}
else
{
//启用控件窗口
pWnd->EnableWindow(TRUE);
SetDlgItemText(IDC_TEST, _T("禁用控件"));
}
}
效果如下:
6.8 如何改变控件的颜色
写一个继承自CEdit的控件
CDemoEdit::CDemoEdit()
{
//创建画刷
m_hBrush = CreateSolidBrush(RGB(0x99, 0xCC, 0xFF));
}
CDemoEdit::~CDemoEdit()
{
}
BEGIN_MESSAGE_MAP(CDemoEdit, CEdit)
//{{AFX_MSG_MAP(CDemoEdit)
ON_WM_CTLCOLOR_REFLECT()
//}}AFX_MSG_MAP
END_MESSAGE_MAP()
/////////////////////////////////////////////////////////////////////////////
// CDemoEdit message handlers
HBRUSH CDemoEdit::CtlColor(CDC* pDC, UINT nCtlColor)
{
//设置文本前景色和背景色
pDC->SetTextColor(RGB(0xFF, 0x00, 0x00));
pDC->SetBkColor(RGB(0x99, 0xCC, 0xFF));
return m_hBrush;
}
其次还要调用SubclassDlgItem方法
m_ctrlEdit.SubclassDlgItem(IDC_EDIT, this);
这个示例先不理,需要思考一下的.以后了解
6.9 如何设置控件的焦点
就是调用SetFocus方法
void CDemoDlg::OnTest()
{
//获得编辑框窗口
CEdit* pEdit1 = (CEdit*)GetDlgItem(IDC_EDIT1);
CEdit* pEdit2 = (CEdit*)GetDlgItem(IDC_EDIT2);
//切换编辑框焦点
if (m_nFocus == 0)
{
if (pEdit2->SetFocus())
{
m_nFocus = 1;
}
}
else if (m_nFocus == 1)
{
if (pEdit1->SetFocus())
{
m_nFocus = 0;
}
}
}
6.10 如何为控件添加工具提示
声明一个CToolTipCtrl控件对象,然后如下调用顺序
//创建工具提示
m_ToolTip.Create(this);
//将工具提示与控件对应起来
m_ToolTip.AddTool(GetDlgItem(IDC_EDIT), _T("编辑框"));
在PreTranslateMessage方法中调用RelayEvent方法
BOOL CDemoDlg::PreTranslateMessage(MSG* pMsg)
{
//将鼠标消息传递给工具提示
m_ToolTip.RelayEvent(pMsg);
return CDialog::PreTranslateMessage(pMsg);
}
先学会用就行