MFC消息数组及批量刷新控件
来源:互联网 发布:eclipse查看php版本 编辑:程序博客网 时间:2024/06/05 02:41
MFC 消息组映射:(前提是控件ID保持连续性)
在.h文件中声明消息响应函数:
afx_msg void OnMyColor(UINT uID);
在.cpp文件中添加消息映射:
BEGIN_MESSAGE_MAP(ColorDlg, CDialogEx)
ON_COMMAND_RANGE(IDC_STATIC0,IDC_STATIC7,OnMyColor)
END_MESSAGE_MAP()
在函数实现中判断ID:
void ColorDlg::OnMyColor(UINT uID)
{
UINT index=uID-IDC_STATIC0;
CString num;
num.Format(_T("%d"),index);
//AfxMessageBox(num);
this->m_currentColor = this->m_colors[index];
this->OnPaint();
}
/////////////////////////////////////////////////////////////////////////////////
控件使用数组变量批量刷新:
在.H文件中声明控件数组和变量数组:
CStatic m_colorCtrls[8];
COLORREF m_colors[8];
在.CPP文件中的DoDataExChange中添加映射:
void ColorDlg::DoDataExchange(CDataExchange* pDX)
{
CDialogEx::DoDataExchange(pDX);
DDX_Control(pDX, IDC_STATIC0, m_colorCtrls[0]);
DDX_Control(pDX, IDC_STATIC1, m_colorCtrls[1]);
DDX_Control(pDX, IDC_STATIC2, m_colorCtrls[2]);
DDX_Control(pDX, IDC_STATIC3, m_colorCtrls[3]);
DDX_Control(pDX, IDC_STATIC4, m_colorCtrls[4]);
DDX_Control(pDX, IDC_STATIC5, m_colorCtrls[5]);
DDX_Control(pDX, IDC_STATIC6, m_colorCtrls[6]);
DDX_Control(pDX, IDC_STATIC7, m_colorCtrls[7]);
}
在OnPaint()中添加绘制代码:
void ColorDlg::OnPaint()
{
CPaintDC dc(this); // device context for painting
CDC *pDC = this->m_colorCurrentCtrl.GetDC();
CRect rct;
m_colorCurrentCtrl.GetWindowRect(&rct);
CBrush brs;
brs.CreateSolidBrush(this->m_currentColor);
CRect picrct;
picrct.top = 0;
picrct.left = 0;
picrct.bottom = rct.Height();
picrct.right = rct.Width();
pDC->FillRect(&picrct, &brs);
在.h文件中声明消息响应函数:
afx_msg void OnMyColor(UINT uID);
在.cpp文件中添加消息映射:
BEGIN_MESSAGE_MAP(ColorDlg, CDialogEx)
ON_COMMAND_RANGE(IDC_STATIC0,IDC_STATIC7,OnMyColor)
END_MESSAGE_MAP()
在函数实现中判断ID:
void ColorDlg::OnMyColor(UINT uID)
{
UINT index=uID-IDC_STATIC0;
CString num;
num.Format(_T("%d"),index);
//AfxMessageBox(num);
this->m_currentColor = this->m_colors[index];
this->OnPaint();
}
/////////////////////////////////////////////////////////////////////////////////
控件使用数组变量批量刷新:
在.H文件中声明控件数组和变量数组:
CStatic m_colorCtrls[8];
COLORREF m_colors[8];
在.CPP文件中的DoDataExChange中添加映射:
void ColorDlg::DoDataExchange(CDataExchange* pDX)
{
CDialogEx::DoDataExchange(pDX);
DDX_Control(pDX, IDC_STATIC0, m_colorCtrls[0]);
DDX_Control(pDX, IDC_STATIC1, m_colorCtrls[1]);
DDX_Control(pDX, IDC_STATIC2, m_colorCtrls[2]);
DDX_Control(pDX, IDC_STATIC3, m_colorCtrls[3]);
DDX_Control(pDX, IDC_STATIC4, m_colorCtrls[4]);
DDX_Control(pDX, IDC_STATIC5, m_colorCtrls[5]);
DDX_Control(pDX, IDC_STATIC6, m_colorCtrls[6]);
DDX_Control(pDX, IDC_STATIC7, m_colorCtrls[7]);
}
在OnPaint()中添加绘制代码:
void ColorDlg::OnPaint()
{
CPaintDC dc(this); // device context for painting
CDC *pDC = this->m_colorCurrentCtrl.GetDC();
CRect rct;
m_colorCurrentCtrl.GetWindowRect(&rct);
CBrush brs;
brs.CreateSolidBrush(this->m_currentColor);
CRect picrct;
picrct.top = 0;
picrct.left = 0;
picrct.bottom = rct.Height();
picrct.right = rct.Width();
pDC->FillRect(&picrct, &brs);
//刷新8个
for(int i = 0 ; i < 8 ; i++)
{
CDC *pDC = this->m_colorCtrls[i].GetDC();
CRect rct;
m_colorCtrls[i].GetWindowRect(&rct);
CBrush brs;
brs.CreateSolidBrush(this->m_colors[i]);
CRect picrct;
picrct.top = 0;
picrct.left = 0;
picrct.bottom = rct.Height();
picrct.right = rct.Width();
pDC->FillRect(&picrct, &brs);
}
}
for(int i = 0 ; i < 8 ; i++)
{
CDC *pDC = this->m_colorCtrls[i].GetDC();
CRect rct;
m_colorCtrls[i].GetWindowRect(&rct);
CBrush brs;
brs.CreateSolidBrush(this->m_colors[i]);
CRect picrct;
picrct.top = 0;
picrct.left = 0;
picrct.bottom = rct.Height();
picrct.right = rct.Width();
pDC->FillRect(&picrct, &brs);
}
}
- MFC消息数组及批量刷新控件
- MFC 刷新指定控件
- MFC动态创建控件及添加消息响应
- MFC动态创建控件及添加消息响应
- MFC动态创建控件及添加消息响应
- MFC动态创建控件及添加消息响应
- MFC 动态创建控件及添加消息响应函数
- MFC动态创建控件及添加消息响应
- MFC动态创建控件(按钮)及添加消息响应
- MFC动态创建控件及添加消息响应
- MFC+OpenCV 刷新Picture控件
- 创建用户控件自定义用户消息及调用(vc,mfc,消息影射)
- MFC控件的消息问题
- MFC 树控件消息响应
- eventbus发送消息刷新上一页listview 消息接收不到及返回上一页时数组角标越界
- MFC消息映射及路由
- MFC消息映射及MFC入门
- 实时刷新MFC的EDIT控件
- configure: error: C++ compiler cannot create executables
- Linux ——创建快捷方式
- My open source : https://github.com/ndkk/GreatFoundationLibrary
- 两个单链表的合并
- 串口函数tcflush()
- MFC消息数组及批量刷新控件
- jQuery插件开发1
- __declspec(align())内存对齐
- MFC 目录选取,指定类型文件查找复制
- 数组子序列的个数
- android中杀死进程的方法
- ios7中,A界面状态栏下面有个UIScrollView,push到B界面后,回退回来UIScrollView下移和可上下拉动的解决
- Java中static、final用法小结
- MFC 自定义类的序列化实现 实例 Shape类