需求是要达到以下效果,按钮显示红色,再按一次显示绿色,用颜色显示目前振动盘的状态
思路,
1. 建立一个Picture Control空间,ID取名 IDC_COMING ,绑定变量CStatic m_coming;
2. 写一个变绿色的方法
void CDlg7::setPictureColorGreen()
{
CPaintDC dc(this); // device context for painting
// TODO: 在此处添加消息处理程序代码
// 不为绘图消息调用 CDialogEx::OnPaint()
CRect rc;
CWnd *pWnd = GetDlgItem(IDC_COMING);//参数为控件ID
pWnd->GetClientRect(&rc);//rc为控件的大小。
int py = rc.Height();
int px = rc.Width();
FillRect(m_coming.GetDC()->GetSafeHdc(), &rc, CBrush(RGB(0, 255, 0)));
}
3. 再写一个变红色的,只改变最后一行
void CDlg7::setPictureColorRed()
{
CPaintDC dc(this); // device context for painting
// TODO: 在此处添加消息处理程序代码
// 不为绘图消息调用 CDialogEx::OnPaint()
CRect rc;
CWnd *pWnd = GetDlgItem(IDC_COMING);//参数为控件ID
pWnd->GetClientRect(&rc);//rc为控件的大小。
int py = rc.Height();
int px = rc.Width();
FillRect(m_coming.GetDC()->GetSafeHdc(), &rc, CBrush(RGB(255, 0, 0)));
}
4. 添加OnPaint事件,初始化成绿色
void CDlg7::OnPaint()
{
CPaintDC dc(this); // device context for painting
// TODO: 在此处添加消息处理程序代码
// 不为绘图消息调用 CDialogEx::OnPaint()
setPictureColorGreen();
}
5. 最后添加按钮事件
void CDlg7::OnBnClickedButton6()
{
CString str;
if (GetDlgItemText(IDC_BUTTON6, str), str == _T("启动震动盘"))
{
setPictureColorRed();
SetDlgItemText(IDC_BUTTON6, _T("关闭震动盘"));
}
else
{
setPictureColorGreen();
SetDlgItemText(IDC_BUTTON6, _T("启动震动盘"));
}
}
完成了