首页 新闻 论坛 群组 Blog 文档 下载 读书 Tag 网摘 搜索 .NET Java 游戏 视频 人才 外包 培训 数据库 书店 程序员
中国软件网
欢迎您:游客 | 登录 注册 帮助
  • 怎样实现按钮按下操作 [已结贴,结贴人:lzh19840809]
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • lzh19840809
    • 等级:
    • 可用分等级:
    • 总技术专家分:
    • 总技术专家分排名:
    • 揭帖率:
    发表于:2008-08-20 13:33:52 楼主
    我用OnCreat创建了一个按钮,但是怎么才能实现它的按下操作呢?
    120  修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • lzh19840809
    • 等级:
    • 可用分等级:
    • 总技术专家分:
    • 总技术专家分排名:
    发表于:2008-08-20 14:02:001楼 得分:0
    最好能有个例子参考一下,比如消息映射怎么设置
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • liumeiqinyang
    • 等级:
    • 可用分等级:
    • 总技术专家分:
    • 总技术专家分排名:
    发表于:2008-08-20 14:27:132楼 得分:0
    在EGIN_MESSAGE_MAP中添加消息映射:
    ON_BN_CLICKED( 按钮ID , 消息响应函数)

    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • lzh19840809
    • 等级:
    • 可用分等级:
    • 总技术专家分:
    • 总技术专家分排名:
    发表于:2008-08-20 14:36:103楼 得分:0
    能详细一点吗?谢谢
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • liumeiqinyang
    • 等级:
    • 可用分等级:
    • 总技术专家分:
    • 总技术专家分排名:
    发表于:2008-08-20 15:06:114楼 得分:0
    就这么简单啊,你的按钮的ID你知道吧,你想按下按钮后实现什么操作就在消息响应函数里实现,消息响应函数要声明,例如:afx_msg void OnBnClicked();
    然后在EGIN_MESSAGE_MAP中添加消息映射:
    ON_BN_CLICKED( 按钮ID , 消息响应函数)
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • lzh19840809
    • 等级:
    • 可用分等级:
    • 总技术专家分:
    • 总技术专家分排名:
    发表于:2008-08-20 15:30:075楼 得分:0
    还是不行,再帮忙看看哪里还有问题吧
    我先声明
    void CMainFrame::OnBnClicked()
    {
      MessageBox("OK!");
    }
    然后在EGIN_MESSAGE_MAP中添加ON_BN_CLICKED(1,OnBnClicked())
    编译有错误error C2065: 'OnBnClicked' : undeclared identifier
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • gby630
    • 等级:
    • 可用分等级:
    • 总技术专家分:
    • 总技术专家分排名:
    发表于:2008-08-20 15:32:456楼 得分:60
    具体步骤是这样的:
    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()

    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • lzh19840809
    • 等级:
    • 可用分等级:
    • 总技术专家分:
    • 总技术专家分排名:
    发表于:2008-08-20 15:47:477楼 得分:0
    你说的是用按钮控件吧,那个我知道,我现在用的是用oncreat生成按钮
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • zqh886
    • 等级:
    • 可用分等级:
    • 总技术专家分:
    • 总技术专家分排名:
    发表于:2008-08-20 15:51:168楼 得分:0
    引用 4 楼 liumeiqinyang 的回复:
    就这么简单啊,你的按钮的ID你知道吧,你想按下按钮后实现什么操作就在消息响应函数里实现,消息响应函数要声明,例如:afx_msg void OnBnClicked();
    然后在EGIN_MESSAGE_MAP中添加消息映射:
    ON_BN_CLICKED( 按钮ID , 消息响应函数)
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • acpg1986
    • 等级:
    • 可用分等级:
    • 总技术专家分:
    • 总技术专家分排名:
    发表于:2008-08-20 15:54:449楼 得分:0
    然后在EGIN_MESSAGE_MAP中添加ON_BN_CLICKED(1,OnBnClicked())
    编译有错误error C2065: 'OnBnClicked' : undeclared identifier

    OnBnClicked()应该是OnBnClicked,不需要括号的吧
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • lzh19840809
    • 等级:
    • 可用分等级:
    • 总技术专家分:
    • 总技术专家分排名:
    发表于:2008-08-20 16:01:0010楼 得分:0
    楼上的好像不对吧,去掉括号错误更多
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • maomaoxiong
    • 等级:
    • 可用分等级:
    • 总技术专家分:
    • 总技术专家分排名:
    发表于:2008-08-20 16:50:4811楼 得分:0
    用过简单的方法:
    1、先随便创建一个按钮控件
    2、再用ClassWizar生成按钮控件的点击消息响应
    3、最后将消息映射中按钮控件的ID替换成你Create的按钮控件ID就可以了,又方便又好用
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • liumeiqinyang
    • 等级:
    • 可用分等级:
    • 总技术专家分:
    • 总技术专家分排名:
    发表于:2008-08-20 17:54:2812楼 得分:20
    声明:
    afx_msg void onClickedButton1();  //
    实现:
    void XXXX::onClickedButton1()
    {
    }

    映射:
    BEGIN_MESSAGE_MAP 下添加下面一行    //前面的少写了一个B字母
    ON_BN_CLICKED( 按钮ID , onClickedButton1) //这里不用括号

    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • lzh19840809
    • 等级:
    • 可用分等级:
    • 总技术专家分:
    • 总技术专家分排名:
    发表于:2008-08-20 20:09:1513楼 得分:0
    我不知道是我太笨还是怎么回事,一步步按各位大侠的步骤做,可还是有这个错误
    error C2065: 'onClickedButton1' : undeclared identifier
    我真不知道为什么,我把声明放在了class CMainFrame : public CFrameWnd;里了,
    void CMainFrame::OnBnClicked()
    {
      MessageBox("OK!");
    }
    是不是哪里还有问题呢?鄙人弄了大半天了,还是这个吊样,求各位再拉一把帮俺看看哪里还有问题好吗?
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • lzh19840809
    • 等级:
    • 可用分等级:
    • 总技术专家分:
    • 总技术专家分排名:
    发表于:2008-08-20 21:15:4514楼 得分:0
    如解决此问题,帖子加分100!
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • lzh19840809
    • 等级:
    • 可用分等级:
    • 总技术专家分:
    • 总技术专家分排名:
    发表于:2008-08-20 21:33:1815楼 得分:0
    // 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;
    #endif

    protected:  // 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_)
    附上窗体上的程序
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • Mackz
    • 等级:
    • 可用分等级:
    • 总技术专家分:
    • 总技术专家分排名:
    • 4

      6

      7

    发表于:2008-08-21 09:39:5316楼 得分:0
    看你上面几处代码,几个问题:一是函数名称到底对不对,可能拼写错误;二是控件ID是什么,最好用符号,用数字前后可能不一致。另外动态创建和资源放置的控件,响应上没有区别,只不过需要自己添加消息响应的代码,看看向导生成的模仿修改即可。

    把cpp文件相关部分贴出来。
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • maomaoxiong
    • 等级:
    • 可用分等级:
    • 总技术专家分:
    • 总技术专家分排名:
    发表于:2008-08-21 11:02:5617楼 得分:0
    建议按照向导生成的模仿修改
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • lonelyhacker
    • 等级:
    • 可用分等级:
    • 总技术专家分:
    • 总技术专家分排名:
    发表于:2008-08-21 12:01:1718楼 得分:40
    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()
    {
    这里自己要怎么做就怎么做.
    }
    修改 删除 举报 引用 回复

    网站简介广告服务网站地图帮助联系方式诚聘英才English 问题报告
    北京创新乐知广告有限公司 版权所有 京 ICP 证 070598 号
    世纪乐知(北京)网络技术有限公司 提供技术支持
    Copyright © 2000-2008, CSDN.NET, All Rights Reserved