| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 2056 人关注过本帖
标题:关于对话框中的编辑框显示的问题
只看楼主 加入收藏
guandekun53
Rank: 2
等 级:论坛游民
帖 子:14
专家分:10
注 册:2013-1-26
结帖率:50%
收藏
已结贴  问题点数:20 回复次数:3 
关于对话框中的编辑框显示的问题
请教各位高人,上次的编辑框问题还是没有解决,按版主的方法,消息能映射过去,编译也通过但运行时却报告错误,问题是显示内容映射到函数后,找不到编辑框的句柄.程序的结构如下,请哪位高人帮忙看看错在哪里,先谢过.
class CShuruDig : public CDialog
{
// Construction
public:
    CString m_num;
    CShuruDig(CWnd* pParent = NULL);   // standard constructor
//    friend class CZhiDig;
    //{{AFX_DATA(CShuruDig)
    enum { IDD = IDD_DIALOG2 };
    CEdit    m_edit;
    //}}AFX_DATA


// Overrides
    // ClassWizard generated virtual function overrides
    //{{AFX_VIRTUAL(CShuruDig)
    protected:
    virtual void DoDataExchange(CDataExchange* pDX);    // DDX/DDV support
    //}}AFX_VIRTUAL

// Implementation
protected:

    // Generated message map functions
    //{{AFX_MSG(CShuruDig)
    afx_msg void OnDestroy();
public:
    afx_msg void OnNum(UINT uID);            //消息显示函数定义,编辑框所在的对话框
    //}}AFX_MSG

    DECLARE_MESSAGE_MAP()

};
=======================================================
void CShuruDig::OnNum(UINT uID)            //消息显示函数
{                                           //字符串可以从下面的对话框映射到程序的这里.
    UINT index=uID-IDC_BUTTON1;
    //CString num;
    m_num.Format(_T("%d"),index);
//    AfxMessageBox(num);

    m_edit.SetWindowText(m_num);            //程序执行到这步后报错,查了发现编辑框的句柄hwnd=0.
//     SetText(m_num);                        //不知到问题究竟出在哪里,而且找了很久好象编辑框的数据显示
}                                            //就只有这个函数,还有其他方法吗?
===================================================================================
 BEGIN_MESSAGE_MAP(CZhiDig, CDialog)        //这段程序和上面两段分别属于两的对话框
    //{{AFX_MSG_MAP(CZhiDig)
    ON_WM_DESTROY()
//    ON_CONTROL_RANGE(BN_CLICKED,IDC_BUTTON1,IDC_BUTTON18,CShuruDig::OnNum)
    //}}AFX_MSG_MAP
    ON_CONTROL_RANGE(BN_CLICKED,IDC_BUTTON1,IDC_BUTTON18,CShuruDig::OnNum)    //消息映射
END_MESSAGE_MAP()
/*
谢谢!
搜索更多相关主题的帖子: 编辑 standard public friend 
2013-05-17 20:44
yuccn
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:何方
等 级:版主
威 望:167
帖 子:6815
专家分:42393
注 册:2010-12-16
收藏
得分:20 
把程序发出来把,我帮你改下

我行我乐
公众号:逻辑客栈
我的博客:
https://blog.yuccn. net
2013-05-18 20:25
guandekun53
Rank: 2
等 级:论坛游民
帖 子:14
专家分:10
注 册:2013-1-26
收藏
得分:0 
版主你好:谢谢你的指点,按你上次讲的方法,现在消息可以映射到处理函数,但是编译也正确程序也可以运行,但就是数据不能在编辑框里显示。我查了下,发现在消息传递的时候把映射函数所在的对话框的句柄也带到处理函数了,这种情况我不知道该如何处理。程序大致如下:
==============================================================================================
BEGIN_MESSAGE_MAP(CZhiDig, CDialog)           //消息影射函数在第1个对话框的类中(CZhiDig)定义,编辑框在第2
    //{{AFX_MSG_MAP(CZhiDig)                   //个对话框(CShuruDig中                                      
    ON_WM_DESTROY()
 
    //}}AFX_MSG_MAP
    ON_CONTROL_RANGE(BN_CLICKED,IDC_BUTTON1,IDC_BUTTON18,CShuruDig::OnNum)    //控件范围映射消息函数
END_MESSAGE_MAP()
===============================================================================================
void CShuruDig::OnNum(UINT uID)    //消息处理函数和编辑框在第2个对话框中,第2个对话框上的按键
{                                  //的值可以在这里显示,
    UINT index=uID-IDC_BUTTON1;
      m_num.Format(_T("%d"),index);
     
//    HWND hWnd=(HWND)(CShuruDig::m_edit);
    CShuruDig::SetDlgItemText(IDC_EDIT2,m_num);        //按键值显示函数,第1个对话框上的按键
//    ::ShowWindow(IDC_EDIT2);                        //通过消息可以传递到这里,但hWnd 始终是
 }                                                    //CZhiDig类的,以至于编辑框的句柄=0。
                                                      //所以第1个对话框的键值就显示不出来了。
象这种问题要怎样才能把第2个对话框的句柄传递给消息处理函数呢?
恳清版主不吝赐教。谢谢!
2013-05-19 20:24
guandekun53
Rank: 2
等 级:论坛游民
帖 子:14
专家分:10
注 册:2013-1-26
收藏
得分:0 
刚才忘了讲:IDC_EDIT2是编辑框的ID。
2013-05-19 20:28
快速回复:关于对话框中的编辑框显示的问题
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.045192 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved