动态增加按钮,动态删除按钮,一个函数响应动态增加的N个按钮的消息~
来源:互联网 发布:星际2经典比赛 知乎 编辑:程序博客网 时间:2024/05/21 11:00
前面有写过一次动态增加按钮与动态删除按钮,后来又发现了更好的办法,下面先记录一下供大家参考:
1.在对话框头文件中加入以下代码:
private:
#pragma pack(push,1)
struct SBtnInfo
{
TCHAR m_btnTxt[20];//用于记录动态生成的按钮的按钮文本
CMyButton * m_pBtn;//指向按钮类的指针
UINT m_btnId;//记录当前按钮的ID
SBtnInfo(){ memset( this, 0, sizeof(SBtnInfo) ); }
};
#pragma pack(pop)
//存储所用动态生成的按钮的信息
CArray <SBtnInfo,SBtnInfo&> m_btnAry;
以上都有注释,就不多说了,不过这里用到了CArray,故需要包含头文件afxtempl.h,即:#include "afxtempl.h"
2.在对话框的原文件中需要动态加入按钮的地方加入代码如下:
for(int ii=0;ii<mydlg.m_HH;ii++)
for(int jj=0;jj<mydlg.m_VV;jj++)
{
SBtnInfo btnInfo;
sprintf(btnInfo.m_btnTxt,_T("%d"),ii*mydlg.m_VV+jj);
m_btnAry.Add(btnInfo);
}
for(int i=0;i<mydlg.m_HH;i++)
for(int j=0;j<mydlg.m_VV;j++)
{
CMyButton * pBtn=new CMyButton;
CRect rcButton(50*j, 30*(i+4), 50*(j+1), 30*(i+5)); // 按钮在对话框中的位置
pBtn->Create(m_btnAry[i*mydlg.m_VV+j].m_btnTxt,
0,
rcButton,this,10000+i*mydlg.m_VV+j);
m_btnAry[i*mydlg.m_VV+j].m_btnId=10000+i*mydlg.m_VV+j;
m_btnAry[i*mydlg.m_VV+j].m_pBtn=pBtn;
pBtn->ShowWindow(SW_SHOW);
}
在需要删除动态加载的按钮的地方,加入代码:
int nBtnCz=m_btnAry.GetSize();
for( int k=0;k<nBtnCz;k++)
{
delete m_btnAry[k].m_pBtn;
}
m_btnAry.RemoveAll();
这样就完成了动态按钮的添加与删除,接下来再说说响应动态按钮的响应,
首先从CButton中派生出新类CMyButton,然后重载OnLButtonUp消息,
并传送自定义消息
GetParent()->PostMessage(WM_BTNCLICKED,GetWindowLong(this->m_hWnd,GWL_ID));
而后在对话框中处理自定义消息WM_BTNCLICKED,代码如下:
LRESULT CSHSTiHua2Dlg::OnMyBtnClicked(WPARAM wParam, LPARAM lParam)
{
if(wParam>=10000)
{
int nBtnCz=m_btnAry.GetSize();
for( int k=0;k<nBtnCz;k++)
{
if(m_btnAry[k].m_btnId==wParam)
{
CString cs;
cs.Format(_T("你点击的按钮的ID为: %d"), wParam);
MessageBox(cs);
return true;
}
}
}
这样就可以响应所有动态增加的按钮消息了哦~~
- 动态增加按钮,动态删除按钮,一个函数响应动态增加的N个按钮的消息~
- 动态增加按钮与动态删除按钮
- 动态增加按钮
- 安卓动态增加按钮
- js动态添加input按钮并给按钮增加onclick的函数事件带参数
- js动态添加input按钮并给按钮增加onclick的函数事件(带参数)
- 在一个消息响应函数中响应多个动态生成的按钮点击事件
- 在一个消息响应函数中响应多个动态生成的按钮点击事件
- 动态表格,通过按钮增加行,删除时删除选择的checkbox那一行
- 动态表格,通过点击按钮增加或者删除一行表格!
- Android 动态增加按钮 居于textview右侧
- 如何动态创建按钮,并响应消息
- 动态创建按钮及添加消息响应
- MFC动态添加按钮以及消息响应
- MFC 动态创建按钮及响应按钮消息
- 用C#代码画出一个Table同时增加 按钮事件为他动态增加行列
- 动态的表格按钮及按钮事件
- 给UITableView的侧滑删除增加多个按钮
- javascript设计模式--封装和信息隐藏(下)
- html textarea 怎样才能不显示滚动条?
- Java class 中public、protected 、friendly、private的区别
- NDK 使用笔记
- C语言和C++面试常考点
- 动态增加按钮,动态删除按钮,一个函数响应动态增加的N个按钮的消息~
- C 语言的可变参数表函数的设计
- iptable的使用
- jqgrid学习
- [Delphi]窗口最大化时怎么才能不要把任务栏盖住
- Android资源文件命名规则
- webservice应用 cxf框架
- puppet安装要点
- JAVA中文字符编码问题详解