首页 新闻 论坛 群组 Blog 文档 下载 读书 Tag 网摘 搜索 .NET Java 游戏 视频 人才 外包 培训 数据库 书店 程序员
中国软件网
欢迎您:游客 | 登录 注册 帮助
  • mfc自动关闭对话框 [已结贴,结贴人:finehai]
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • finehai
    • 等级:
    • 可用分等级:
    • 总技术专家分:
    • 总技术专家分排名:
    • 揭帖率:
    发表于:2008-08-20 12:24:44 楼主
    现有一个事件触发一个提示对话框弹出,然后一直等待,当另一个事件被触发时对话框自动关闭
    请问一下在mfc中这个应该怎么实现 谢谢!
    30  修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • dbger
    • 等级:
    • 可用分等级:
    • 总技术专家分:
    • 总技术专家分排名:
    发表于:2008-08-20 12:30:011楼 得分:5
    向弹出对话框发送WM_CLOSE消息
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • maomaoxiong
    • 等级:
    • 可用分等级:
    • 总技术专家分:
    • 总技术专家分排名:
    发表于:2008-08-20 12:31:182楼 得分:5
    另一个事件被触发时向对话框发送WM_DESTROY,销毁对话框窗口即可
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • superdiablo
    • 等级:
    • 可用分等级:
    • 总技术专家分:
    • 总技术专家分排名:
    发表于:2008-08-20 12:40:573楼 得分:0
    下面是我的一段代码,一个对话框一直等待,超时了就自动关闭:
    void CWaitDlg::OnTimer(UINT nIDEvent)
    {
    // TODO: Add your message handler code here and/or call default
        ASSERT(nIDEvent==TIMERID_WAITDLG);
    if(nIDEvent==TIMERID_WAITDLG)
        {
            this->PostMessage(WM_COMMAND, (WPARAM)IDCANCEL, 0L);
        }

    CDialog::OnTimer(nIDEvent);
    }
    明白了吧
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • finehai
    • 等级:
    • 可用分等级:
    • 总技术专家分:
    • 总技术专家分排名:
    发表于:2008-08-20 15:13:484楼 得分:0
    晕 可能我没说清楚啊 我的意思是弹出的对话框是随时关闭的
    比如说用户点播一个节目 却没钱了 然后就自动弹出一个对话框提示用户充值 当用户去冲完值以后这个对话框就自己自动关闭了
    我想知道实现这一过程不用多线程能实现吗?
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • Virget
    • 等级:
    • 可用分等级:
    • 总技术专家分:
    • 总技术专家分排名:
    发表于:2008-08-20 16:01:035楼 得分:0
    不用多线程不行!
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • liweiwei0808
    • 等级:
    • 可用分等级:
    • 总技术专家分:
    • 总技术专家分排名:
    发表于:2008-08-20 17:39:586楼 得分:0
    不要用多线程,CWND对象是多线程不安全的,发送消息。
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • finehai
    • 等级:
    • 可用分等级:
    • 总技术专家分:
    • 总技术专家分排名:
    发表于:2008-08-21 09:07:357楼 得分:0
    能不能详细说说该怎么做 俺是mfc菜鸟 请教各位啊
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • xsc2001
    • 等级:
    • 可用分等级:
    • 总技术专家分:
    • 总技术专家分排名:
    发表于:2008-08-21 10:22:018楼 得分:20
    你的强出的对话框是模式对话框,所以你在其他窗口里控制它是不好使的,只有在你的弹出的这个对话框中创建一个线程,去循环检测是否应该退出,如果条件满足就调用对话框的OnCancle();或者发送WM_CLOSE消息,这样对话框就会自动销毁。示例代码如下:
    CMyMsgDlg::CheckThread()
    {
        while(1)
        {
            if(CheckOk())//这里你的检查代码,是否可以退出
                break;
            sleep(100);
        }
        PostMessage(WM_CLOSE, NULL, NULL);//最好是用PostMessage这样也是为了让线程自然终止
    }
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • xiaozi141
    • 等级:
    • 可用分等级:
    • 总技术专家分:
    • 总技术专家分排名:
    发表于:2008-09-04 22:38:589楼 得分:0
    俺也是mfc菜鸟,来学习一下
    修改 删除 举报 引用 回复

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