动态增加n个菜单项,怎么知道用户点击的是哪个菜单项?
因为不知道有多少项,无法为其一一写映射函数,我想把新增的菜单都用同一个ID,只要写一个响应函数,但要做的动作根据菜单项的string而定,所以无从下手。
因为不知道有多少项,无法为其一一写映射函数,我想把新增的菜单都用同一个ID,只要写一个响应函数,但要做的动作根据菜单项的string而定,所以无从下手。
解决方案 »
- 如何获取无线网卡的SNR或者噪声NOISE?
- Windows窗口应用程序 MFC应用程序有什么区别呀?
- 低版本系统调用高版本API?
- 一组CEdit 如何做到当我一个Edit输入满时自动跳到下一个Edit?
- VC如何禁用WINDOWS 2003 远程桌面服务,高人请进,言对有分
- 我想问一个会图的问题!大家帮帮忙啊!
- 高分请教!
- 1................请问,动态创建的CTreeCtrl消息怎么添加??
- 如何编程实现在facebook.com的个人状态编辑框里增加表情工具条
- 我要把'A'改成'a'如何用unicode进行操作,获得unicode码的函数是?
- Access 如何按字段整形值的某一位进行查询
- 完成端口问题!!
在WindowProc中可以处理WM_COMMAND message,LOWORD( wParam )可以判断菜单ID,而lParam为0,则很难作出判断。
menu, when a control sends a notification message to its parent window, or
when an accelerator keystroke is translated.WM_COMMAND
wNotifyCode = HIWORD(wParam); // notification code
wID = LOWORD(wParam); // item, control, or accelerator identifier
hwndCtl = (HWND) lParam; // handle of control
你可以从hwndCtl这里想想办法。
然后手工添加消息映射
ON_COMMAND_RANGE(ID_BASE + 1, ID_BASE + 10, OnMyCommand)消息处理函数原型为
afx_msg void OnFileMenuItems(UINT nID);从nID - ID_BASE可以得到点击的是第几个菜单项
#define MIN_MENU_ID xxx
#define MAX_MENU_ID yyythen in message map add:
ON_COMMAND_RANGE( MIN_MENU_ID, MAX_MENU_ID, YourFunction)
void YourFunction( UNIT id)
{
}