24小时热门版块排行榜    

查看: 918  |  回复: 10

wangshingo

木虫 (著名写手)

[求助] 您好,有关获取编辑框输入值问题

int num;
        CInput  Input;
        num=Input.GetDlgItemInt(IDC_EDIT1);
        int nTimer=SetTimer(1,num,NULL);

CInput是我定义的含有编辑框的对话框。实现对话框输入控制定时器发送消息的时间间隔,我是在视类窗口编辑的。请问怎么实现不了,调试后会出现系统错误。
回复此楼

» 猜你喜欢

» 本主题相关价值贴推荐,对您同样有帮助:

已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

sudo

木虫 (正式写手)


余泽成(金币+1): 谢谢参与应助! 2011-08-24 16:25:47
既然CInput是你自己做的一个对话框...那不实例化它怎么能“弹出来”
2楼2011-08-24 09:35:19
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

wangshingo

木虫 (著名写手)

引用回帖:
2楼: Originally posted by sudo at 2011-08-24 09:35:19:
既然CInput是你自己做的一个对话框...那不实例化它怎么能“弹出来”

Input就是对话框类CInput的实例呀,
3楼2011-08-24 23:34:19
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

sudo

木虫 (正式写手)

【答案】应助回帖

★ ★ ★
余泽成(金币+3): 谢谢参与应助! 2011-08-25 10:36:16
wangshingo(金币+5): 呵呵,虽然我还没有按你说的做呢,但我很羡慕你说的这么详细细致,敬佩油然而生。非常感谢你。 2011-08-25 21:41:36
引用回帖:
3楼: Originally posted by wangshingo at 2011-08-24 23:34:19:
Input就是对话框类CInput的实例呀,

咳,看来我术语用得不对...对MFC不熟

我想说的是
CODE:
Input.DoModal();

不过实话说我觉得你的方法不可行,如果你的对话框不是一直存在着的话,也就是点了“确定”按钮,对话框消失后,再GetDlgItemInt()应该是错的

合理的做法应该这样:
在你的对话框类里面加上一个int型变量(顺带一提其实GetDlgItemInt()返回的是一个UINT,不过这个先无所谓了),可以为public,然后在资源视图里面双击对话框的确定按钮,添加响应函数,比如(这里我假设你是从CDialogEx派生的对话框,或许可能你是CDialog,无所谓,嗯,这句应该是VS自动生成的)
CODE:
void CInput::OnBnClickedOk()
{
        editVal = (int) GetDlgItemInt(IDC_EDIT);
        CDialogEx::OnOK();
}

注意如果你是手工添加的响应函数,注意在CInput.h的类声明里面需要有
CODE:
afx_msg void OnBnClickedOk();

好,现在可以跑到比如view的cpp里面,在PreCreateWindow()中添加语句——呃,对了,应当先向view添加一个变量,比如叫int time
CODE:
BOOL 你的View::PreCreateWindow(CREATESTRUCT& cs)
{
        MyDialog dlg;
        dlg.DoModal();

        time = dlg.getVal();

        return CView::PreCreateWindow(cs);
}

这样子,在view里面就得到了time的值了~然后怎么SetTimer自己弄吧
4楼2011-08-25 09:49:46
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

sudo

木虫 (正式写手)

★ ★
余泽成(金币+2): 辛苦了! 2011-08-25 10:36:32
对了,上面我实验用的叫MyDialog,没改回来

而且在这个对话框里面,我自己设了一个editVal私有变量,然后有一个共有函数getVal()把它的值返回出来

嗯,懒的话,就直接public那个editVal吧
5楼2011-08-25 09:53:55
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

wangshingo

木虫 (著名写手)

引用回帖:
5楼: Originally posted by sudo at 2011-08-25 09:53:55:
对了,上面我实验用的叫MyDialog,没改回来

而且在这个对话框里面,我自己设了一个editVal私有变量,然后有一个共有函数getVal()把它的值返回出来

嗯,懒的话,就直接public那个editVal吧

能把那个共有函数getval()怎么实现的返回 ,把函数原型给我看看吗?
6楼2011-08-25 21:44:53
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

sudo

木虫 (正式写手)

引用回帖:
6楼: Originally posted by wangshingo at 2011-08-25 21:44:53:
能把那个共有函数getval()怎么实现的返回 ,把函数原型给我看看吗?

我就不改我的测试代码啦,我自己的对话框类叫MyDialog(你的叫CInput),注意区别就行了
CODE:
int MyDialog::getVal(void)
{
        return editVal;
}

里面editVal是MyDialog一个私有int变量,嗯
7楼2011-08-25 21:48:18
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

sudo

木虫 (正式写手)

这个editVal在MyDialog的构造函数里面被初始化为0

然后,看4楼,点击确认按钮的时候更改它的值,通过函数OnBnClickedOk()
8楼2011-08-25 21:49:59
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

wangshingo

木虫 (著名写手)

引用回帖:
7楼: Originally posted by sudo at 2011-08-25 21:48:18:
我就不改我的测试代码啦,我自己的对话框类叫MyDialog(你的叫CInput),注意区别就行了
CODE:
int MyDialog::getVal(void)
{
        return editVal;
}

里面editVal是MyDialog一个私有int变量,嗯

恩,呵呵,OK了。另外,我在菜单项里加入一个菜单,控制对话框显示,void CMyView::OnMenuitem32772()
{
        // TODO: Add your command handler code here
           CInput  Input;
        Input.DoModal();

对话框控制了。再下面函数里加入取出编辑框输入值
BOOL CMyView:reCreateWindow(CREATESTRUCT& cs)
{
        // TODO: Modify the Window class or styles here by modifying
        //  the CREATESTRUCT cs
    CInput  Input;
    time=Input.m_input;

怎么又捕捉不到输入值了呢,另外点击对话框确定后让我的对话框一直存在,因为我还要操作其他按钮功能,我要把我的对话框当做机械运动的控制面板使用。
9楼2011-08-26 06:40:36
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

sudo

木虫 (正式写手)

引用回帖:
9楼: Originally posted by wangshingo at 2011-08-26 06:40:36:
恩,呵呵,OK了。另外,我在菜单项里加入一个菜单,控制对话框显示,void CMyView::OnMenuitem32772()
{
        // TODO: Add your command handler code here
           CInput  Input;
        Input.DoModal();

对话框控 ...

才知道你的需求....

呃,出现那个情况那绝对是当然的

你是想点击菜单之后再弹对话框的话,那么,它就不应该在下面这个函数里面出现,PreCreateWindow是整个窗口出现之前做的事情~
CODE:
BOOL CMyView::PreCreateWindow(CREATESTRUCT& cs)

对于不同函数之间,变量的传递方法,这个需要注意一下

CInput如果是局部变量的话,那么就没有办法了,别的函数是访问不到它里面的东西的...=,=正常写的话

所以CInput的一个定义你可以放在全局,也就是所有函数的外面,然后再在OnMenuitem32772() 里面直接Input.DoModal(),不要再在里面定义了

这样这个对话框里面的成员才能被别的地方所访问到

以上是最简单的方法...麻烦的方法就不说了...
10楼2011-08-26 08:53:30
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖
相关版块跳转 我要订阅楼主 wangshingo 的主题更新
最具人气热帖推荐 [查看全部] 作者 回/看 最后发表
[考博] 34岁读博士晚吗 +18 emitdne 2024-06-13 18/900 2024-06-14 12:40 by tomkk88
[基金申请] 博后面上今天有bug可以看到是否资助? +19 lyfbangong 2024-06-12 30/1500 2024-06-14 12:30 by Yanchong
[基金申请] 博士后基金需要结题吗? +7 zhouchuck 2024-06-13 7/350 2024-06-14 10:23 by zt0543
[基金申请] BO4的YQ答辩通知发布了吗? +3 博学笃行 2024-06-11 3/150 2024-06-14 10:15 by jsqy
[基金申请] 2024国社科通讯评审 +4 qsd10086 2024-06-13 5/250 2024-06-14 09:59 by kevinllsliu
[论文投稿] 投了一篇4区的SCI,审稿人一个拒稿,一个小修,编辑给了大修。 +6 安稳22123 2024-06-13 7/350 2024-06-14 09:57 by xubo7
[教师之家] 我们学院常年位居 各学院 倒数第二。专业撤销的话,在编者有什么补偿? +12 河西夜郎 2024-06-09 13/650 2024-06-14 09:27 by dhdhgfv
[找工作] 杭电、天津科技、青农和宁波工程学院如何选? +4 味道很好啊 2024-06-13 4/200 2024-06-14 09:05 by forever411
[论文投稿] 文章proof要求使用机构的邮箱 5+3 不可不信缘 2024-06-11 11/550 2024-06-14 07:00 by 3001160025
[有机交流] 车间生产,真空度很高,温度很高,但减压蒸馏速度很慢。 10+9 召唤鬼泣lL 2024-06-13 29/1450 2024-06-14 06:53 by gcl348
[考博] 还能读上博士吗 +14 小伙走起 2024-06-09 24/1200 2024-06-14 06:32 by 18787065176
[有机交流] 旋蒸请教 +6 办公室摸鱼 2024-06-09 9/450 2024-06-13 21:31 by wuxiaominggo
[基金申请] 博士后面上项目状态还是专家评审吗 10+9 Thatcheremu 2024-06-13 55/2750 2024-06-13 21:23 by 乌合麒麟
[硕博家园] 竟然失眠了 +8 zmr8 2024-06-09 8/400 2024-06-13 20:52 by 鱼翔浅底1
[基金申请] 连续两年医学口青年项目初审体会 +11 进击的荣耀 2024-06-09 18/900 2024-06-13 17:27 by 进击的荣耀
[硕博家园] 机械研究生如何拿到年薪40+w +13 阿巴阿巴哦哦 2024-06-11 15/750 2024-06-13 15:40 by 113745685
[考博] 博导选择 +3 bing85977 2024-06-12 3/150 2024-06-13 15:34 by 我是邱尧
[论文投稿] with editor日期变更 +3 慎独的小花卷 2024-06-12 8/400 2024-06-13 11:00 by 慎独的小花卷
[找工作] 成都产品质量检测研究院 200+3 鲸鱼663 2024-06-11 8/400 2024-06-13 08:10 by 加纳居士
[基金申请] 请问评审专家医学口今年函审是哪天结束的? +5 hyzs6688 2024-06-08 19/950 2024-06-13 06:33 by hyzs6688
信息提示
请填处理意见