同一个问题再次发铁,关于on_command_range的

friendzj 2003-11-24 05:19:33
我的代码不能进入消息处理函数。
RESOURCE.H
#define ID_STARTBUT 10000
#define ID_ENDBUT 10010
testdlg.h
afx_msg void OnFileMenuItems(UINT nID,NMHDR * pNotifyStruct, LRESULT * pResult);
testdlg.cpp
消息响应部分
BEGIN_MESSAGE_MAP(CTestDlg, CDialog)
//{{AFX_MSG_MAP(CTestDlg)
ON_WM_SYSCOMMAND()
ON_WM_PAINT()
ON_WM_QUERYDRAGICON()
ON_BN_CLICKED(IDC_BUTTON1, OnButton1)
//}}AFX_MSG_MAP
ON_NOTIFY_RANGE( NM_DBLCLK, ID_STARTBUT, ID_ENDBUT,OnFileMenuItems )
END_MESSAGE_MAP()
动态按钮的产生部分
for (int i=10000;i<=10010;i++)
{ str.Format("%d",i);

DWORD dwStyle = WS_CHILDWINDOW | WS_VISIBLE | BS_PUSHBUTTON;

m_hButton = ::CreateWindow("BUTTON",TEXT(str),dwStyle,
100*j,0,70,40,this->m_hWnd,NULL,AfxGetInstanceHandle(),(LPVOID)i);
j++;
::ShowWindow(m_hButton,SW_SHOW);
}
按钮的id和ID_STARTBUT,ID_ENDBUT是对应的,而且在按钮的cation上可以看到了
消息处理部分:
void CTestDlg::OnFileMenuItems(UINT nID,NMHDR * pNotifyStruct, LRESULT * pResult)
{ CString temp;
temp.Format("%d",nID);
AfxMessageBox(temp);
}
就是这一部分,怎么也不能进行处理,不知道是哪里出了问题
...全文
55 16 打赏 收藏 转发到动态 举报
写回复
用AI写文章
16 条回复
切换为时间正序
请发表友善的回复…
发表回复
friendzj 2003-11-26
  • 打赏
  • 举报
回复
up!
friendzj 2003-11-25
  • 打赏
  • 举报
回复
fwm1981:
ON_ONTIFY_RANGE 的参数是
ON_NOTIFY_RANGE( wNotifyCode, id, idLast, memberFxn )
如果你改成
ON_NOTIFY_RANGE( ID_STARTBUT, ID_ENDBUT,OnFileMenuItems )
我想会有比较大的问题。因为参数的数量不对!
fwm1981 2003-11-25
  • 打赏
  • 举报
回复
我不是说了吗?要把:
ON_NOTIFY_RANGE( NM_DBLCLK, ID_STARTBUT, ID_ENDBUT,OnFileMenuItems )
改成
ON_NOTIFY_RANGE( ID_STARTBUT, ID_ENDBUT,OnFileMenuItems )
再试试
friendzj 2003-11-25
  • 打赏
  • 举报
回复
up!
friendzj 2003-11-25
  • 打赏
  • 举报
回复
不好意思,俺的标题写错了,我也是后来才发现,但是标题是不能编辑的,不好意思了,呵呵
fwm1981 2003-11-25
  • 打赏
  • 举报
回复
哦,你的标题是ON_COMMAND_RANGE,我说的也是ON_COMMAND_RANGE,
而你的问题是 ON_ONTIFY_RANGE
longki 2003-11-25
  • 打赏
  • 举报
回复

俺还是友情地顶一下吧!
friendzj 2003-11-25
  • 打赏
  • 举报
回复
up!
friendzj 2003-11-24
  • 打赏
  • 举报
回复
up!
friendzj 2003-11-24
  • 打赏
  • 举报
回复
up!
fwm1981 2003-11-24
  • 打赏
  • 举报
回复
MSDN上只此一种参数形式:

ON_COMMAND_RANGE
ON_COMMAND_RANGE( id1, id2, memberFxn )
Parameters
id1
Command ID at the beginning of a contiguous range of command IDs.
id2
Command ID at the end of a contiguous range of command IDs.
memberFxn
The name of the message-handler function to which the commands are mapped.
friendzj 2003-11-24
  • 打赏
  • 举报
回复
flybirdlee:
我的两个id只是一个开始和一个结束,在我creaetwindows的时候,的确是连续的!而且是for循环出来的!所以问题应该不在这里吧?难道我定义按钮要全部在资源文件中定义id??我的按钮数量是不固定的,怎么办呀?
flybirdlee 2003-11-24
  • 打赏
  • 举报
回复
#define ID_STARTBUT 10000
#define ID_ENDBUT 10010

ID要连续的。
friendzj 2003-11-24
  • 打赏
  • 举报
回复
已经按照两位的意思改动了,但是问题依然存在?难道这个问题真的很难吗?
flyelf 2003-11-24
  • 打赏
  • 举报
回复
NM_DBLCLK?应该是BN_CLICKED吧
kof99th 2003-11-24
  • 打赏
  • 举报
回复
(LPVOID)&i

16,551

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC相关问题讨论
社区管理员
  • 基础类社区
  • Creator Browser
  • encoderlee
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

        VC/MFC社区版块或许是CSDN最“古老”的版块了,记忆之中,与CSDN的年龄几乎差不多。随着时间的推移,MFC技术渐渐的偏离了开发主流,若干年之后的今天,当我们面对着微软的这个经典之笔,内心充满着敬意,那些曾经的记忆,可以说代表着二十年前曾经的辉煌……
        向经典致敬,或许是老一代程序员内心里面难以释怀的感受。互联网大行其道的今天,我们期待着MFC技术能够恢复其曾经的辉煌,或许这个期待会永远成为一种“梦想”,或许一切皆有可能……
        我们希望这个版块可以很好的适配Web时代,期待更好的互联网技术能够使得MFC技术框架得以重现活力,……

试试用AI创作助手写篇文章吧