VC驿站

 找回密码
 加入驿站

QQ登录

只需一步,快速开始

搜索
查看: 154|回复: 2

MFC批量创建按钮的问题

[复制链接]
46_avatar_middle
最佳答案
4 
在线会员 发表于 5 天前 | 显示全部楼层 |阅读模式
现在有一个需求,依据一批文本文件中的词语,创建一批按钮在对话框上面。
一个词语对应创建一个按钮。疑问是:
1.批量创建的时候,怎么为按钮分配ID
2.怎么给按钮添加点击事件响应函数

这些都是动态创建的按钮,而且文本中的词语数量不固定。

没有头绪,请会的吗?




上一篇:mfc如何同时操作多个控件
下一篇:萌新关于C++冒泡排序的问题
17_avatar_middle
最佳答案
21 
在线会员 发表于 4 天前 | 显示全部楼层
Windows程序设计\Chap09的代码应该适合你。

  1. struct
  2. {
  3.      int     iStyle ;
  4.      TCHAR * szText ;
  5. }
  6. button[] =
  7. {
  8.      BS_PUSHBUTTON,      TEXT ("PUSHBUTTON"),
  9.      BS_DEFPUSHBUTTON,   TEXT ("DEFPUSHBUTTON"),
  10.      BS_CHECKBOX,        TEXT ("CHECKBOX"),
  11.      BS_AUTOCHECKBOX,    TEXT ("AUTOCHECKBOX"),
  12.      BS_RADIOBUTTON,     TEXT ("RADIOBUTTON"),
  13.      BS_3STATE,          TEXT ("3STATE"),
  14.      BS_AUTO3STATE,      TEXT ("AUTO3STATE"),
  15.      BS_GROUPBOX,        TEXT ("GROUPBOX"),
  16.      BS_AUTORADIOBUTTON, TEXT ("AUTORADIO"),
  17.      BS_OWNERDRAW,       TEXT ("OWNERDRAW")
  18. } ;

  19.           // i就是第一个按钮的ID
  20.           for (i = 0 ; i < NUM ; i++)
  21.                hwndButton[i] = CreateWindow ( TEXT("button"),
  22.                                    button[i].szText,
  23.                                    WS_CHILD | WS_VISIBLE | button[i].iStyle,
  24.                                    cxChar, cyChar * (1 + 2 * i),
  25.                                    20 * cxChar, 7 * cyChar / 4,
  26.                                    hwnd, (HMENU) i,
  27.                                    ((LPCREATESTRUCT) lParam)->hInstance, NULL) ;
复制代码

BtnLook.rar

131.22 KB, 下载次数: 3

60_avatar_middle
最佳答案
0 
在线会员 发表于 前天 10:51 | 显示全部楼层
换个思路吧:第1个问题,一般我们动态创建一些窗口和控件的时候关心的重点不在于编号ID而在于句柄handle一般情况下windows编程只要这个handle有效你就可以开工了所以思路是你分配一个数组保存好你批量创建的handle就好理论上来说远比ID要好用因为你可以直接写入各种操作函数了;第2个问题事件响应的消息函数一般用LRESULT CALLBACK WndProc(HWND hwnd,UINT uMsg,WPARAM wParam, LPARAM lParam)赋值给你指定的hwnd的窗口类winClass注册的那个lpfnWndProc消息处理函数,然后WndProc里指定你要对其消息类型uMsg的不同响应估计你还是要抄一抄那些win32的基础代码比如新建的窗口项目就有消息响应的源码因为你要指定一些wParam和lParam判断消息内容当然你不在创建时候定义处理函数在创建后也行用一下LONG SetWindowLong(HWND hWnd,int nIndex,LONG dwNewLong)指定一下窗口的自定义处理函数就行了
您需要登录后才可以回帖 登录 | 加入驿站 qq_login

本版积分规则

×【发帖 友情提示】
1、请回复有意义的内容,请勿恶意灌水;
2、纯数字、字母、表情等无意义的内容系统将自动删除;
3、若正常回复后帖子被自动删除,为系统误删的情况,请重新回复其他正常内容或等待管理员审核通过后会自动发布;
4、感谢您对VC驿站一如既往的支持,谢谢合作!

关闭

站长提醒上一条 /2 下一条

QQ|小黑屋|手机版|VC驿站 ( 辽ICP备09019393号-4 )|网站地图wx_jqr

GMT+8, 2022-5-18 17:35

Powered by CcTry.CoM

© 2009-2021 cctry.com

快速回复 返回顶部 返回列表