怎样继承一个button类来响应OnLButtonUp消息?

zhiheng 2004-05-06 10:37:11
在头文件声明了 virtual void OnLButtonUp(UINT nFlags, CPoint point);
在CPP文件写了
void CVtxButton::OnLButtonUp(UINT nFlags, CPoint point)
{

AfxMessageBox("OK");
}

点击按钮没反应
好像少了些什么
请大虾指点
--
...全文
253 11 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
kevinlw03 2004-05-07
  • 打赏
  • 举报
回复
class CVtxButton 继承public Cbutton
重载OnLButtonUp()
void CVtxButton::OnLButtonUp(UINT nFlags, CPoint point)
{

AfxMessageBox("OK");
}

给你的按钮生成一个CVtxButton类型的控件变量,就可以了!
如果在添加变量的时候(有这个可能哟,我碰到过),选择类型只出现CButton 没有CVtxButton类型
你就把工程内的专门记录资源的那个文件del,在添加变量,这是会有提示
你可以重新把资源载入,再添加时就看到CVtxButton类型了。
zhangnanonnet 2004-05-07
  • 打赏
  • 举报
回复
afx_msg void OnLButtonUp(UINT nFlags, CPoint point);
你加了没有?
zhiheng 2004-05-07
  • 打赏
  • 举报
回复
IDC_BUTTON1是有的,不清楚为什么会找不到。
我又添加了个
#include "Resource.h" 那个错误就没了
最后代码如下:
BEGIN_MESSAGE_MAP(CVtxButton, CButton)
//{{AFX_MSG_MAP(CDemoDlg)
WM_LBUTTONUP(IDC_BUTTON1, OnLButtonUp) /*53行*/
//}}AFX_MSG_MAP /*54行*/
END_MESSAGE_MAP() /*55行*/

出现了如下错误
VtxButton.cpp(53) : error C2064: term does not evaluate to a function
VtxButton.cpp(55) : error C2059: syntax error : '{'
VtxButton.cpp(55) : error C2143: syntax error : missing ';' before '{'
VtxButton.cpp(55) : error C2447: missing function header (old-style formal list?)
VtxButton.cpp(55) : error C2143: syntax error : missing ';' before '}'
Error executing cl.exe.
Creating browse info file...

Demo.exe - 5 error(s), 0 warning(s)
我感觉好像是WM_LBUTTONUP(IDC_BUTTON1, OnLButtonUp)这种映射方式有点问题,求各位大虾给指点一下,不胜感激
zhiheng 2004-05-07
  • 打赏
  • 举报
回复
看起来只能这样做了
我的原意是作一个游戏手柄的按钮
让一个WM_LBUTTONUP和一个button对应起来
如果按楼上的做法
每个CVtxButton按钮都会执行同样的OnLButtonUp
按向上按钮和按向下按钮都执行一样的东东
游戏就没法玩了

不过仍感谢 kevinlw03(诚诚)
我设法得到当前得到focus的按钮id
这样在OnLButtonUp里加个switch就知道按的是那个按钮了
呵呵
也算凑合

谢谢各位回帖的兄弟
zhangnanonnet 2004-05-06
  • 打赏
  • 举报
回复
在消息映射中你少了
BEGIN_MESSAGE_MAP(CPhoneBookPage, CDialogResize)
//{{AFX_MSG_MAP(CPhoneBookPage)
WM_LBUTTONUP(IDC_BUTTON1, OnLButtonUp)
//}}AFX_MSG_MAP
END_MESSAGE_MAP()
Kudeet 2004-05-06
  • 打赏
  • 举报
回复
提示 error C2065: 'IDC_BUTTON1' : undeclared identifier
不知道是什么原因?????
IDC_BUTTON1没有定义

WM_LBUTTONUP(IDC_BUTTON1, OnLButtonUp)把IDC_BUTTON1改为具体按钮的ID号
zhiheng 2004-05-06
  • 打赏
  • 举报
回复
我试了一下
用ON_WM_LBUTTONUP()也行
只是还无法和具体按钮对应
zhiheng 2004-05-06
  • 打赏
  • 举报
回复
我按您说的改了
在新建类里的消息映射用
WM_LBUTTONUP(IDC_BUTTON1, OnLButtonUp)还是有错
提示 error C2065: 'IDC_BUTTON1' : undeclared identifier
不知道是什么原因?????
用ON_MESSAGE(WM_LBUTTONUP,OnLButtonUp) 好使
只是由这个类生成的按钮全都相应一个OnLButtonUp函数
达不到与具体按钮对应
Pipi0714 2004-05-06
  • 打赏
  • 举报
回复
1、对话框中定义CVtxButton类的变量,m_cButton;
2、然后重载对话框的WM_INIT...消息函数,
m_cButton.Subdlg...(IDC_BUTTON1); //把你的控件淤你的类建立影射关系
上面的步骤你做了么?
ygzdev 2004-05-06
  • 打赏
  • 举报
回复
virtual void OnLButtonUp(UINT nFlags, CPoint point);改为afx_msg void OnLButtonUp(UINT nFlags, CPoint point);试试
zhiheng 2004-05-06
  • 打赏
  • 举报
回复
多谢您的回复
我按您说的做了
可是出现了如下问题:
E:\课题资料\参考例程\button\不规则按钮\DemoDlg.cpp(50) : error C2064: term does not evaluate to a function
E:\课题资料\参考例程\button\不规则按钮\DemoDlg.cpp(52) : error C2059: syntax error : '{'
E:\课题资料\参考例程\button\不规则按钮\DemoDlg.cpp(52) : error C2143: syntax error : missing ';' before '{'
E:\课题资料\参考例程\button\不规则按钮\DemoDlg.cpp(52) : error C2447: missing function header (old-style formal list?)
E:\课题资料\参考例程\button\不规则按钮\DemoDlg.cpp(52) : error C2143: syntax error : missing ';' before '}'
Error executing cl.exe.
Creating browse info file...

Demo.exe - 5 error(s), 0 warning(s)

15,980

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 界面
社区管理员
  • 界面
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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