超级菜的问题有30分呀!!!!!我写了个基于对话框的程序对一个位图添加了一个BN_CLICKED消息,可没有响应!

warmwater 2001-07-19 05:50:21
我写了个基于对话框的程序对一个位图添加了一个BN_CLICKED消息,可没有响应!

是不是BN_CLICKED只用于BUTTON呢?如果要对位图对CLICKED操作响应该用什么方法呢?
...全文
108 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
zhuang094 2001-07-24
  • 打赏
  • 举报
回复
采用Picture控件,控件ID不能为IDC_STATIC,Type:Bitmap ;Image:IDB_YOURBMP;选中Notify属性,在Class Wizard中映射就可以了。
adron 2001-07-24
  • 打赏
  • 举报
回复
1.ID改成和IDXXX
2.style中选中Notify
3.Class Wizard中映射就可以了
xpmao 2001-07-24
  • 打赏
  • 举报
回复
To wang_xiao_jian(崦嵫): 没错,选中Notify属性后,直接映射BN_CLICKED就可以了,我那时写了一个类CBlueLabel是为了重载他的=WM_CTLCOLOR .

To warmwater(莎木),请简化代码。
azuo_lee 2001-07-20
  • 打赏
  • 举报
回复
BN_CLICKED当然只有Button才会发出。
要响应静态控件的单击消息,应该对其添加STN_CLICKED,而不是BN_CLICKED(当然,此静态控件必须有SS_NOTIFY风格)。
完全没有必要做子类化。
wang_xiao_jian 2001-07-20
  • 打赏
  • 举报
回复
重新生成一个类是没有必要的,只要在对话框资源中,在Static的Style属性页里复选Notify就是了
rediori 2001-07-20
  • 打赏
  • 举报
回复
你的控件有个属性
要选择上 styles 下面的 NOTIFY 这样控件材响应消息
warmwater 2001-07-19
  • 打赏
  • 举报
回复
有例程么,给safebase@21cn.com一份ok?

3k!
xpmao 2001-07-19
  • 打赏
  • 举报
回复
1。你需要新建一个类:然后重载PreSubclassWindow()函数:
void CNewStatic::PreSubclassWindow()
{
// We want to get mouse clicks via STN_CLICKED
::SetWindowLong(m_hWnd, GWL_STYLE,GetStyle()|SS_NOTIFY);

CStatic::PreSubclassWindow();
}

2。然后可以用Class Wizard找到“=BN_CLICKED" 注意那个等号!重载就可以了。

3。再把你的控件子类为新建的CNewStatic类。
warmwater 2001-07-19
  • 打赏
  • 举报
回复
当然了!!我改为IDB_BITMAP1了!!!可不行呀!!
wang_xiao_jian 2001-07-19
  • 打赏
  • 举报
回复
位图控件的ID不能为IDC_STATIC,须指定为另外的值

16,472

社区成员

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

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

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