我用OnCreat创建了一个按钮,但是怎么才能实现它的按下操作呢?

解决方案 »

  1.   

    在EGIN_MESSAGE_MAP中添加消息映射:
    ON_BN_CLICKED( 按钮ID , 消息响应函数)
      

  2.   

    就这么简单啊,你的按钮的ID你知道吧,你想按下按钮后实现什么操作就在消息响应函数里实现,消息响应函数要声明,例如:afx_msg void OnBnClicked();
    然后在EGIN_MESSAGE_MAP中添加消息映射: 
    ON_BN_CLICKED( 按钮ID , 消息响应函数) 
      

  3.   

    还是不行,再帮忙看看哪里还有问题吧
    我先声明
    void CMainFrame::OnBnClicked()
    {
      MessageBox("OK!");
    }
    然后在EGIN_MESSAGE_MAP中添加ON_BN_CLICKED(1,OnBnClicked()) 
    编译有错误error C2065: 'OnBnClicked' : undeclared identifier
      

  4.   

    具体步骤是这样的:
    1.为CView类增加消息相应函数:OnCreate。
    int CtestView::OnCreate(LPCREATESTRUCT lpCreateStruct)
    {
    if (CView::OnCreate(lpCreateStruct) == -1)
    return -1;
    // TODO:  在此添加您专用的创建代码
    m_btn.Create(_T("button"), WS_CHILD|WS_VISIBLE|BS_PUSHBUTTON ,CRect(0,0,100,100),this,111);

    return 0;
    }2.在CView类上面点击右键-属性-消息。找到WM_LButtonDown消息,增加OnLButtonDown函数。
    void CtttView::OnLButtonDown(UINT nFlags, CPoint point)
    {
    // TODO: 在此添加消息处理程序代码和/或调用默认值
    AfxMessageBox(_T("cccc"),MB_OK,0);
    CView::OnLButtonDown(nFlags, point);
    }3.在CtttView类中的
    BEGIN_MESSAGE_MAP(CtttView, CView)
    // 标准打印命令
    ON_COMMAND(ID_FILE_PRINT, &CView::OnFilePrint)
    ON_COMMAND(ID_FILE_PRINT_DIRECT, &CView::OnFilePrint)
    ON_COMMAND(ID_FILE_PRINT_PREVIEW, &CView::OnFilePrintPreview)
    ON_WM_LBUTTONDOWN()    //增加鼠标右键消息响应
    ON_WM_CREATE()
    END_MESSAGE_MAP()
      

  5.   

    你说的是用按钮控件吧,那个我知道,我现在用的是用oncreat生成按钮
      

  6.   

    然后在EGIN_MESSAGE_MAP中添加ON_BN_CLICKED(1,OnBnClicked())
    编译有错误error C2065: 'OnBnClicked' : undeclared identifierOnBnClicked()应该是OnBnClicked,不需要括号的吧
      

  7.   

    用过简单的方法:
    1、先随便创建一个按钮控件
    2、再用ClassWizar生成按钮控件的点击消息响应
    3、最后将消息映射中按钮控件的ID替换成你Create的按钮控件ID就可以了,又方便又好用
      

  8.   

    声明:
    afx_msg void onClickedButton1();  //
    实现:
    void XXXX::onClickedButton1()
    {
    }映射:
    BEGIN_MESSAGE_MAP 下添加下面一行    //前面的少写了一个B字母
    ON_BN_CLICKED( 按钮ID , onClickedButton1) //这里不用括号
      

  9.   

    我不知道是我太笨还是怎么回事,一步步按各位大侠的步骤做,可还是有这个错误
    error C2065: 'onClickedButton1' : undeclared identifier
    我真不知道为什么,我把声明放在了class CMainFrame : public CFrameWnd;里了,
    void CMainFrame::OnBnClicked()
    {
      MessageBox("OK!");
    }
    是不是哪里还有问题呢?鄙人弄了大半天了,还是这个吊样,求各位再拉一把帮俺看看哪里还有问题好吗?
      

  10.   

    // MainFrm.h : interface of the CMainFrame class
    //
    /////////////////////////////////////////////////////////////////////////////#if !defined(AFX_MAINFRM_H__FD34866D_F605_4DB7_827D_E53FF29E6453__INCLUDED_)
    #define AFX_MAINFRM_H__FD34866D_F605_4DB7_827D_E53FF29E6453__INCLUDED_#if _MSC_VER > 1000
    #pragma once
    #endif // _MSC_VER > 1000#include "ChannelConfigDlg.h"class CMainFrame : public CFrameWnd
    {

    protected: // create from serialization only
    CMainFrame();
    DECLARE_DYNCREATE(CMainFrame)
        
    // Attributes
    public:
    CChannelConfigDlg m_ChannelConfigDlg;
         
    // Operations
    public:
    void SendCMDtoDSP(int CmdIndex);
    afx_msg void onClickedButton1(); 
    // Overrides
    // ClassWizard generated virtual function overrides
    //{{AFX_VIRTUAL(CMainFrame)
    virtual BOOL PreCreateWindow(CREATESTRUCT& cs);
    //}}AFX_VIRTUAL

    // Implementation
    public:
    //void onClickedButton1();
    virtual ~CMainFrame();
    #ifdef _DEBUG
    virtual void AssertValid() const;
    virtual void Dump(CDumpContext& dc) const;
    #endifprotected:  // control bar embedded members
    CStatusBar  m_wndStatusBar;
    CToolBar    m_wndToolBar;// Generated message map functions
    protected:
    CButton m_button2;
    CButton m_button1;
    CEdit   m_edit1;
    CStatic m_static1;
    //{{AFX_MSG(CMainFrame)
    afx_msg int OnCreate(LPCREATESTRUCT lpCreateStruct);
    afx_msg void OnConfigChannelconfig();
    afx_msg void OnActivate(UINT nState, CWnd* pWndOther, BOOL bMinimized);
    //}}AFX_MSG DECLARE_MESSAGE_MAP()
    };///////////////////////////////////////////////////////////////////////////////{{AFX_INSERT_LOCATION}}
    // Microsoft Visual C++ will insert additional declarations immediately before the previous line.#endif // !defined(AFX_MAINFRM_H__FD34866D_F605_4DB7_827D_E53FF29E6453__INCLUDED_)
    附上窗体上的程序
      

  11.   

    看你上面几处代码,几个问题:一是函数名称到底对不对,可能拼写错误;二是控件ID是什么,最好用符号,用数字前后可能不一致。另外动态创建和资源放置的控件,响应上没有区别,只不过需要自己添加消息响应的代码,看看向导生成的模仿修改即可。把cpp文件相关部分贴出来。
      

  12.   

    BOOL Create( LPCTSTR lpszCaption, DWORD dwStyle, const RECT& rect, CWnd* pParentWnd, UINT nID );建议去看下MSDN  看上面 UINT nID  指的是 你的按钮的ID..你看下你这个Create里面的这个ID是什么.在这里创建的是IDC_HAHA..
    在头文件里面添加     #define IDC_HAHA 96367
    pretect: 
    afx_msg void OnHaha();
     
    //源文件里面添加   ON_BN_CLICKED(IDC_HAHA, OnHaha)
     
    以及下面这个.
    void Chehe::OnHaha() 
    {
     这里自己要怎么做就怎么做.
    }