+ -
当前位置:首页 → 问答吧 → VS 2005 基于对话框 点击图片 弹出窗口

VS 2005 基于对话框 点击图片 弹出窗口

时间:2011-12-13

来源:互联网

VS2005中,基于对话框的程序:
  我作了一个界面,包括很多Picture Control控件,加载了很多BMP图。
  现在想要实现的功能为:点击BMP图(也就是Picture Control控件),弹出一个对话框(模式的、无模式的都成)。
  问题是:Picture Control控件没有Click事件,因此,不知道如何实现?
  或者如果不能实现,有没有其它的方案,可以间接实现我想要的效果(就是可以加载很多图片,并且点击可以弹出窗口)。
  请各位大牛们,帮帮忙,如果问题得到圆满解决,加倍给分!

作者: peter511   发布时间: 2011-12-13

Picture Control控件选中 SS_NOTIFY 属性vs2005中设置 NOTIFY 为TRUE
父窗口就可以接收STN_CLICKED 单击消息

可以用ON_COMMAND_RANGE 批量接收一批控件
ON_COMMAND_RANGE(id, idLast, memberFxn)

作者: gameslq   发布时间: 2011-12-13

那单击事件的编写函数要在哪里写呢?不好意思,我是新手

作者: peter511   发布时间: 2011-12-13

C/C++ code

BOOL CtestDlg::PreTranslateMessage(MSG* pMsg) 
{
    if (WM_LBUTTONDOWN == pMsg->message )
    {
        if (GetDlgItem(IDC_STATIC1)->GetSafeHwnd() == pMsg->hwnd)
        {
             //这里处理谈对话框,可以postmessage给自己去处理,也可以直接函数调用
        }
    }
    return   CDialog::PreTranslateMessage(pMsg); 
}
IDC_STATIC1是控件的ID,不要用默认的,另外Notify属性改成true

作者: dahaiI0   发布时间: 2011-12-13

1楼的方法更好,memberFxn有个参数,比如说
void CTest::memberFxn(UINT uID)
{
 Switch(uID)
{
case ID_STATIC1:
//点了图片1,弹框处理
break;
case ID_STATIC2:
//点了图片2,弹框处理
break;
....
}

}

作者: dahaiI0   发布时间: 2011-12-13