我现在用picture代替button做了按钮,可是点击的时候那个picture没有反应,我说的反应是:本身图片没有反应,程序还是可以运行的。如果我现在要在点击picture按钮的时候,那个按钮会显示另外一个图片,这该怎么办??有人回答:派生Picture控件子类,响应OnLButtonDown消息,然后改变图片,再响应OnLButtonUp消息,恢复图片。可是我不会,怎样实现上面的功能,能不能告知具体的操作步骤和代码?实在万分感谢!!!

解决方案 »

  1.   

    他的说法是正确的,子类化的做法可能比较复杂,可以引入一个ImageList来帮助实现改变图片
      

  2.   

    http://www.vckbase.com/document/viewdoc/?id=551
      

  3.   

    如何引入ImageList呢,接着怎么做呢?
      

  4.   

    picture本身是static控件
    你放他到对话框中时,他本身ID为IDC_STATIC,这时在classwizard中是无法映射成变量的。所以把ID改为IDC_STATIC1,将该控件映射成m_pic,类型为CStatic.
    然后,选中他的Notify属性,这样你点击他后他才会向对话框发送bn_clicked消息。接着,在classwizard中响应该消息,并添加如下代码
    void CYourDlg::OnStatic1() 
    {
    HBITMAP hBmp = (HBITMAP)LoadBitmap(AfxGetInstanceHandle(), MAKEINTRESOURCE(IDB_BITMAP3));
    if (hBmp != NULL)
    {
    ::DeleteObject(m_pic.SetBitmap(hBmp));
    }}IDB_BITMAP3为你加到资源中的位图。
    当然也可是是一个硬盘上的文件,但加载函数得改为LoadImage
      

  5.   

    还是SetBitmap,这种问题自己想想就能想出来的其实。
      

  6.   

    建议使用cbuttonst空间;
    http://wwww.codeproject.com