怎样在MFC中创建多个按钮(不要那种用按钮控件画出来的)?

我要在vc6.0基于MFC建立的基本对话框中创建64个按钮(八行八列),每个按钮都要有文本属性和颜色属性,并且都要有可以供操作的唯一ID标识。因为每个按钮的功能基本相同,... 我要在vc6.0基于MFC建立的基本对话框中创建64个按钮(八行八列),每个按钮都要有文本属性和颜色属性,并且都要有可以供操作的唯一ID标识。因为每个按钮的功能基本相同,只是文本不一样而有小的区别。怎样批量做好响应呢,不会要对每个按钮都双击之后重复定义它的响应吧?
请给出有比较详细注释的代码,不要复制粘贴的。答案满意的可以再加分!
展开
 我来答
哈哈哈哈nSYs
推荐于2016-04-20 · 超过20用户采纳过TA的回答
知道答主
回答量:91
采纳率:0%
帮助的人:76万
展开全部
我来给你做个详细的解释吧;
1. 首先定义2个ID, 比如64个按钮
#define IDC_BTN_SINGLEPIN_0 20000
#define IDC_BTN_SINGLEPIN_END 20063
2. 就是在ONCREATE中 动态创建按钮
for (int i=0; i<64; i++)
{
m_btSinglePin[i].Create("",WS_CHILD|WS_VISIBLE,CRect(0,0,0,0),this,IDC_BTN_SINGLEPIN_0+i);
}
//注意后面的ID.....不要问我m_btSinglePin[i]定义在哪里

3. 响应处理
响应函数 afx_msg void OnClkSinglePin(UINT nID);
隐射处理
ON_COMMAND_RANGE(IDC_BTN_SINGLEPIN_0, IDC_BTN_SINGLEPIN_END, OnClkSinglePin)
4. 搞定!!!!!
void CGameClientView::OnClkSinglePin(UINT nID)
{
int n = nID - IDC_BTN_SINGLEPIN_0;
// n就是那个按钮按了
}
5. 吃饱饭没事给你做纯手工码字; 至于按钮五元六色,自己上网找个图形按钮控件,多如牛毛
更多追问追答
追问
不好意思,我是初学者,还是有两个问题。
1,隐射处理放在那个文件的那个位置啊?
2,
void CGameClientView::OnClkSinglePin(UINT nID)
{
int n = nID - IDC_BTN_SINGLEPIN_0;
// n就是那个按钮按了
}
这个是什么意思,能具体解释一下嘛?放在哪个文件那个位置?
我没有做响应处理,运行后按钮能显示了,太感谢了!纠正一下,第二部要用两层for循环,而且CRect中的坐标也有点小问题。
追答
映射是MFC最基础的东西,消息映射都在BEGIN_MESSAGE_MAP 下面,仔细看看你向导生成对话框代码,消息映射普通按钮是ON_COMMAND(XXXXXX,onbuttonclick), 那个onbuttonclick()就是点击按钮时的处理函数; void CGameClientView::OnClkSinglePin(UINT nID)这个就是映射函数类似与你点击按钮 onbuttonclick()那个函数一样, 带个参数应为我们映射的是 多个连续ID。。。如果学习MFC消息映射都还不会,希望你先多认真看书再按书里最简单例子开始学习,就算实用向导也要知道哪里代码被修改了,否则 不说了。。。。。还有 ,CRECT那个坐标一般没有用, 一般处理都是在响应ONSIZE的时候你去布局你的控件
maoyangtongmmm
2011-10-18
知道答主
回答量:1
采纳率:0%
帮助的人:1696
展开全部
我想在一个窗口中点击几个按钮或静态控件,通过它们的组合来显示图片,请问怎样实现?我在ondraw中的绘制函数如下:
CMy2Doc* pDoc = GetDocument();
ASSERT_VALID(pDoc);
using namespace Gdiplus;
Graphics graphics(pDC-> m_hDC);
Image m_Image1(L "Scenic001.bmp ");
graphics.DrawImage(&m_Image1,400,200,m_Image1.GetWidth(),m_Image1.GetHeight());
追问
你这是几个按钮啊?一个按钮的我自己能搞定!
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式